[Ruby]Ruby でクラス継承
SWF は Header とそれに続く沢山の Tag で構成されている。
| Header | Tag1 | Tag2 | ... | Tag(End) |
Tag はコンテンツの種類(画像なのか音声なのか文字なのか。とか)毎に
中身(のデータ構造)が異なるので、Tag を継承させて Tag_DefineBitsJPEG
とか Tag_DefineSound みたいに実装していきたい。
てな訳で、クラス継承のお勉強。
出来たもの
Signature=FWS Version=4 FileLength=2704
RECT: (bits=14) (0, 0) - (240, 240)
FrameRate=8.0 FrameCount=40
Type=9(Unknown) Length=3
<略>
Type=1(Unknown) Length=0
Type=0(End) Length=0
それっぽく出来た。
クラス継承の仕方
class SWF_Tag end class SWF_Tag_End < SWF_Tag def initialize(bit_in, length) @Content = bit_in.get_string!(length) end end
Foo_Baa < Foo という記法で OK
クラス名の文字列からオブジェクト生成
class Foo def initialize(foo) end end className = "Foo" foo = <コンストラクタに渡したい適当な値> klass = Object.instance_eval("#{className}.new(foo)")
こんな感じ。