SWFをダンプしてみた

mzp2008-07-27

SWFの仕様書とHello,worldのダンプを見比べてみた。あいかわらず、アンドキュメントな仕様があるっぽいな。
使ったHello,worldはこんなの。

package{
    import flash.display.*;
    import flash.text.*;

    public class Hello extends Sprite {
	public function Hello(){
	    trace('Hello');
	    var text:TextField = new TextField();
	    text.text = 'Hello world!!';
	    text.autoSize = TextFieldAutoSize.LEFT;
	    this.addChild(text);
	}
    }
}

ダンプするとこうなる。

[HEADER]        File version: 9
[HEADER]        File is zlib compressed. Ratio: 68%
[HEADER]        File size: 955 (Depacked)
[HEADER]        Frame rate: 24.000000
[HEADER]        Frame count: 1
[HEADER]        Movie width: 500.00
[HEADER]        Movie height: 375.00
[045]         4 FILEATTRIBUTES
[04d]       457 METADATA
[041]         4 SCRIPTLIMITS
[009]         3 SETBACKGROUNDCOLOR (86/9c/a7)
[029]        26 SERIALNUMBER
[02b]         6 FRAMELABEL "Hello"
==== Error: Unknown tag:0x052 ====
[052]       396 (null)
==== Error: Unknown tag:0x04c ====
[04c]        10 (null)
[001]         0 SHOWFRAME 1 (00:00:00,000) (label "Hello")
[000]         0 END

それぞれのタグの意味はこんな感じ。SerialNumberは仕様書に載ってないんだよなぁ。

タグ名 説明
FileAttribute メタデータを持つか、ネットワークを使うかを決める
MetaData SWFの情報。RDFで格納
ScriptLimits ActionScriptの制限。再帰の深さとタイムアウトの時間
SetBackgroundColor 背景色
SerialNumber 不明。タグ番号は0x29。他のひとのswfと比較したけど同じだった
FrameLabel このフレームの名前
DoABC ABC
SymbolClass 外部に公開するクラス名
ShowFrame 表示の開始
End ファイルの終端。EOF