SWFをダンプしてみた

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 |