約 2,542,533 件
https://w.atwiki.jp/swfspec/pages/28.html
SWFの構造要約 目次 SWF ヘッダ SWF ファイルの構造 タグのフォーマット 定義と制御のタグ SWF ファイル中のタグの順番 ディクショナリ SWF ファイルの処理 ファイル圧縮手順 まとめ
https://w.atwiki.jp/swfspec/pages/30.html
SWF ファイルの構造 ヘッダの後には、タグの付いたデータブロックの列が続きます。 全てのタグは共通のフォーマットで記述され、SWF のパーサプログラムが理解できないタグが出現した場合は、そのブロックを読み飛ばすことができます。ブロックは、ブロック中でオフセットを指すことができますが、他のブロックにまたがるオフセットを指定することはできません。これにより、 SWF ファイルの編集ツールがタグの削除・挿入・変更 をすることが可能になります。 FileAttributes タグだけは、 SWF 8 以降が必要になります。 SWF ファイルの構造 Header FileAttributes タグ Tag Tag Tag .... End Tag 移動 前のページ SWF ヘッダ 次のページ タグのフォーマット
https://w.atwiki.jp/swfspec/pages/35.html
SWF ファイルの処理 Flash Player は ShowFrame タグが出現するまで、 SWF ファイル内のタグを全て処理していきます。 ShowFrame タグが出現した時、表示リストの内容が画面にコピーされ、 Flash Player は次のフレームを処理する時までアイドル状態になります。 1 番目の ShowFrame タグが出現する時までに出てきた、全ての制御タグのオペレーションは一旦溜めて置かれて、最初のフレームのコンテンツに対して実行されます。2 番目以降も同様に処理されます。 移動 前のページ ディクショナリ 次のページ ファイル圧縮手順
https://w.atwiki.jp/swfspec/pages/82.html
SWF 3 アクション ここで挙げられたアクションは SWF 3 で使用できます。 DoAction DoAction は、現在のフレームが完了した時に Flash Player に対してアクションのリストを実行するように指示します。 アクションは DoAction タグがフレームのどこに出現したかということに関係なく、 ShowFrame タグが出現した時に実行されます。 SWF 9 以降では、 FileAttributes タグの ActionScript3 フィールドに 1 がセットされている時、 DoAction タグの内容は無視されます。 フィールド 型 コメント Header RECORDHEADER タグタイプ = 12 Actions ACTIONRECORD [0 個以上] 実行するアクションのリスト(次の ActionRecord 参照) ActionEndFlag UI8 = 0 常に 0 ACTIONRECORD ACTIONRECORD は、 ACTIONRECORDHEADER と、それに続くアクションのデータのかたまりから成ります。 ACTIONRECORDHEADER は ActionCode を使って実行するアクションを指定します。 アクションがヘッダの後にデータを必要とする場合、 ActionCode の上位ビットは 1 にセットされます。これは ActionCode が、後に続く 16 bit の長さのアクションデータのかたまりを必要とすることを示します。 注:多くのアクションで Length 以降のデータのかたまりは指定されません。その場合、命令は 1 バイトの種類のデータのみで構成されます。 ACTIONRECORDHEADER フィールド 型 コメント ActionCode UI8 アクションコード Length If code = 0x80, UI16 ActionCode と Length フィールドを含まない、 ACTIONRECORDHEADER のバイト数 ActionGotoFrame ActionGotoFrame は、 現在のファイル中の指定されたフレームに移動する命令です。 フィールド 型 コメント ActionGotoFrame ACTIONRECORDHEADER ActionCode = 0x81Length は常に 2 Frame UI16 フレームインデックス ActionGetURL ActionGetURL は、 UrlString で指定された URL からデータを取得する命令です。 URL は色んなタイプにすることができます。HTML ファイル、画像または他の SWF ファイル等です。 ファイルがブラウザ上で実行されている場合、 URL から取得したデータは TargetString で指定されるフレームに表示されます。 "_level0" と "_level1" は特別なターゲット名で、他の SWF ファイルを level 0 と 1 にロードするために使用されます。 フィールド 型 コメント ActionGetURL ACTIONRECORDHEADER ActionCode = 0x83 UrlString STRING ターゲット URL 文字列 TargetString STRING ターゲット文字列 ActionNextFrame ActionNextFrame は、現在のファイル中の次のフレームに進める命令です。 フィールド 型 コメント ActionNextFrame ACTIONRECORDHEADER ActionCode = 0x04 ActionPreviousFrame ActionPreviousFrame は、現在のファイル中の前のフレームに進める命令です。 フィールド 型 コメント ActionPrevFrame ACTIONRECORDHEADER ActionCode = 0x05 ActionPlay ActionPlay は、現在のフレームから再生を開始する命令です。 フィールド 型 コメント ActionPlay ACTIONRECORDHEADER ActionCode = 0x06 ActionStop ActionStop は、現在のフレームで再生を停止する命令です。 フィールド 型 コメント ActionStop ACTIONRECORDHEADER ActionCode = 0x07 ActionToggleQuality ActionToggleQuality は、High と Low で描画品質を切り替える命令です。 フィールド 型 コメント ActionToggleQualty ACTIONRECORDHEADER ActionCode = 0x08 ActionStopSounds ActionStopSounds は、再生中の全ての音声を停止する命令です。 フィールド 型 コメント ActionStopSounds ACTIONRECORDHEADER ActionCode = 0x09 ActionWaitForFrame ActionWaitForFrame は、指定されたフレームで停止する命令です。 それ以外の場合、指定された数のアクションをスキップします。 フィールド 型 コメント ActionWaitForFrame ACTIONRECORDHEADER ActionCode = 0x8ALength は常に 3 Frame UI16 停止するフレーム SkipCount UI8 フレームがロードされていない時のスキップするアクションの数 ActionSetTarget ActionSetTarget は後に続くアクションのコンテキストを切り替える命令です。 現在のファイルの名前付きオブジェクト (TargetName) に適用します。 例えば、 SetTarget アクションはスプライトオブジェクトのタイムラインを調整する時に使うことができます。 次のアクションの順序で "spinner" という名前のスプライトをタイムラインの最初のフレームに送信します。 SetTarget "spinner" GotoFrame zero SetTarget " " (空文字列) アクション終了 (Action code = 0) SetTarget "spinner" で spinner オブジェクトを SetTarget "" まで適用します。 これはアクションのコンテキストを現在のファイルに戻すように指定します。 ターゲット名に関する解説は DefineSprite をご覧ください。 フィールド 型 コメント ActionSetTarget ACTIONRECORDHEADER ActionCode = 0x8B TargetName STRING アクションターゲットのターゲット ActionGoToLabel ActionGoToLabel は、ラベルで指定されたフレームに移動する命令です。 FrameLabel タグを使うことでフレームにラベルを関連付けることができます。 フィールド 型 コメント ActionGoToLabel ACTIONRECORDHEADER ActionCode = 0x8C Label STRING フレームラベル 移動 前のページ SWF 3 アクションモデル 次のページ SWF 4 アクションモデル
https://w.atwiki.jp/swfspec/pages/147.html
SWF video tags DefineVideoStream DefineVideoStream フィールド 型 コメント Header RECORDHEADER タグタイプ = 60 CharacterID UI16 ID for this video character NumFrames UI16 Number of VideoFrame tagsthat makes up this stream Width UI16 Width in pixels Height UI16 Height in pixels VideoFlagsReserved UB[4] Must be 0 VideoFlagsDeblocking UB[3] 000 = use VIDEOPACKETvalue001 = off010 = Level 1 (Fast deblockingfilter)011 = Level 2 (VP6 only, betterdeblocking filter)100 = Level 3 (VP6 only, betterdeblocking plus fast deringingfilter)101 = Level 4 (VP6 only, betterdeblocking plus betterderinging filter)110 = Reserved111 = Reserved VideoFlagsSmoothing UB[1] 0 = smoothing off (faster)1 = smoothing on (higherquality) CodecID UI8 2 = Sorenson H.2633 = Screen video (SWF 7 andlater only)4 = VP6 (SWF 8 and later only)5 = VP6 video with alphachannel (SWF 8 and later only) VideoFrame VideoFrame フィールド 型 コメント Header RECORDHEADER タグタイプ = 61 StreamID UI16 ID of video stream character ofwhich this frame is a part FrameNum UI16 Sequence number of this framewithin its video stream VideoData if CodecID = 2H263VIDEOPACKETif CodecID = 3SCREENVIDEOPACKETif CodecID = 4VP6SWFVIDEOPACKETif CodecID = 5VP6SWFALPHAVIDEOPACKETif CodecID = 6SCREENV2VIDEOPACKET Video frame payload 移動 前のページ On2 Truemotion VP6 ビットストリームフォーマット 次のページ バイナリデータ
https://w.atwiki.jp/swfspec/pages/33.html
SWF ファイル中のタグの順番 SWF 中のタグは次のルールに沿う範囲内で、任意の順番で入れ替えることができます。 SWF 8 以降では、 FileAttributes タグを一番最初に配置する必要があります (must)。 他のタグに依存されるタグは最初に、依存関係の無いタグは最後に配置するようにします (should)。 定義タグは、制御タグによって参照される前に配置する必要があります (must)。 Streaming sound タグは、再生順序通りに配置する必要があります (must)。再生順序と異なる場合は、配置した順に再生されます。 End タグは、常に SWF ファイルの最後に配置します。 移動 前のページ 定義と制御のタグ 次のページ ディクショナリ
https://w.atwiki.jp/swfspec/pages/96.html
SWF 5 アクション アクションの種類 アクションの名前 スクリプトオブジェクト ActionCallFunction ActionCallMethod ActionConstantPool ActionDefineFunction ActionDefineLocal ActionDefineLocal2 ActionDelete ActionDelete2 ActionEnumerate ActionEquals2 ActionGetMember ActionInitArray ActionInitObject ActionNewMethod ActionNewObject ActionSetMember ActionTargetPath ActionWith 型 ActionToNumber ActionToString ActionTypeOf 数学 ActionAdd2 ActionLess2 ActionModulo スタック操作 ActionBitAnd ActionBitLShift ActionBitOr ActionBitRShift ActionBitURShift ActionBitXor ActionDecrement ActionIncrement ActionPush (Enhancements) ActionPushDuplicate ActionReturn ActionStackSwap ActionStoreRegister 移動 前のページ SWF 5 アクションモデル 次のページ スクリプトオブジェクト
https://w.atwiki.jp/swfspec/pages/102.html
SWF 6 アクション SWF 6 では、次のアクションが使用可能です。 DoInitAction ActionInstanceOf ActionEnumerate2 ActionStrictEquals ActionGreater ActionStringGreater DoInitAction DoInitAction は、 DoAction タグと似ています。 これは、実行するための一連のバイトコードを定義します。 DoInitAction によって定義されたアクションは、DoAction により定義されたアクションの実行前に、 1 度だけ実行されます。 たまに、 ActionScript によって最初のスプライトが作られる前に、アクションが実行されないといけない場合があります。 よくあるのは、 ActionScript のスプライトクラスに関連した Object.registerClass の呼び出しです。 この呼び出しは一般的に、 ActionScript の #initclip プラグマの中に見つけることができます。 DoInitAction は、この #initclip プラグマの実装に使われます。 DoInitAction タグは、アクションを適用したいスプライトを 1 つ指定します。 1 つのフレームにいくつもの DoInitAction を含めることができます。 これらのアクションは、タグの出現した順に実行されます。 しかし、 SWF ファイル中では、 DoInitAction タグは各スプライトに 1 つだけしか含めることができません。 DoInitAction タグに含まれるアクションは、フレーム中の普通のアクションの実行前に、タグの出現時点で即時実行されます。 この動作は、 1 回目のフレーム出現時にのみ適用されます。 再生位置の調整により、後で同じフレームが出現した時には、 DoInitAction の内容はスキップされます。 SWF 9 以降で、 FileAttributes タグの ActionScript3 フィールドが 1 にセットされている場合、 DoInitAction タグに含まれる内容は無視されます。 (注) DoAction タグの開始直後にアクションを設定しても、 DoInitAction タグと同じ効果は得られません。 Flash Player は、DoAction タグの最初のアクションの前に、タグに関連するスプライトオブジェクトを作成します。 DoInitAction に含まれるアクションは、それらの実行前に発生します。 フィールド 型 コメント Header RECORDHEADER タグタイプ = 59 Sprite ID UI16 アクションを適用するスプライト Actions ACTIONRECORD[0 以上] 実行するアクションのリスト ActionEndFlag UI8 常に 0 ActionInstanceOf ActionInstanceOf は、 ActionScript の instanceof() 演算子を実装します。 これは Boolean 値を返す演算子で、左オペランド (通常、オブジェクト) が、右オペランドに渡したコンストラクタ関数で表されるクラスのインスタンスであるかどうかを示します。 SWF 7 以降では、 ActionInstanceOf はインターフェイスもサポートします。 右オペランドのコンストラクタに、インターフェイスオブジェクトの参照を渡し、かつ左オペランドがそのインターフェイスを実装している場合、 ActionInstanceOf は、左オペランドが右オペランドのインスタンスであるかどうか、正確に報告します。 フィールド 型 コメント ActionInstanceOf ACTIONRECORDHEADER ActionCode = 0x54 ActionInstanceOf は、次のことを行います。 スタックから、 constr 、 obj を順番にポップする obj が、 constr のインスタンスかどうか判定する 戻り値 (ブール値) をスタックにプッシュする ActionEnumerate2 ActionEnumerate2 は ActionEnumerate と似ていますが、引数を String 型のオブジェクト名で渡す代わりに、スタック上にオブジェクトの型を入れて渡します。 フィールド 型 コメント ActionEnumerate2 ACTIONRECORDHEADER ActionCode = 0x55 ActionEnumerate2 は、次のことを行います。 obj をスタックからポップする スタックに null 値をプッシュする。これは、スロット名の配列の最後を示す obj の、各スロット名を String 型でスタックにプッシュする (注) スロット名の配列の順番は未定義。 ActionStrictEquals ActionStrictEquals は ActionEquals2 と似ていますが、 引数の型を考慮した等価判定を行います。 ActionScript で、 ‘===’ 演算子を実装するのに使われます。 フィールド 型 コメント ActionStrictEquals ACTIONRECORDHEADER ActionCode = 0x66 ActionStrictEquals は、次のことを行います。 arg1 と arg2 をスタックからポップする スタックに Boolean 型の戻り値を 1 つプッシュする ActionGreater ActionGreater は、 ActionLess2 と逆のことを行います。 以前は、引数をプッシュする順番を入れ替えて ActionLess, ActionNot と実行することでエミュレートしていたので ActionGreater はありませんでした。 しかし、この引数入れ替えによる処理はいくつかのケースで驚いたことが起こっていました。 フィールド 型 コメント ActionGreater ACTIONRECORDHEADER ActionCode = 0x67 ActionGreater は、次のことを行います。 arg1 と arg2 をスタックからポップする arg2 arg1 で比較する スタックに Boolean 型の戻り値を 1 つプッシュする ActionStringGreater ActionStringGreater は、 ActionStringLess と逆のことを行います。 このアクションコードは、 ActionGreater と同じ理由で追加されました。 フィールド 型 コメント ActionStringGreater ACTIONRECORDHEADER ActionCode = 0x68 ActionStringGreater は、次のことを行います。 arg1 と arg2 をスタックからポップする バイトごとに arg2 arg1 で比較する スタックに Boolean 型の戻り値を 1 つプッシュする 移動 前のページ SWF 6 アクションモデル 次のページ SWF 7 アクションモデル
https://w.atwiki.jp/swfspec/pages/104.html
SWF 7 アクション SWF 7 では、次のアクションが使用可能です。 ActionDefineFunction2 ActionExtends ActionCastOp ActionImplementsOp ActionTry ActionThrow ActionDefineFunction2 ActionDefineFunction2 は、 ActionDefineFunction と似ています。 追加の機能として、関数の Activation オブジェクトで未使用の変数の作成を防ぐことと、数に関するレジスタで局所変数の交換を可能にすることによって関数の処理速度を上げています。 ActionDefineFunction2 では、1 つの関数につき 256 個のプライベートなレジスタを割り当てます。 パラメータかローカル変数をレジスタと置き換えることができます。関数の Activation オブジェクトに保存する値の替わりになります。 (Activation オブジェクトは暗黙的にローカルスコープにあり、中に名前付きの引数・ローカル変数を含みます。Activation オブジェクトの詳細については ECMA-262 をご覧ください。) ActionDefineFunction2 also includes six flags to instruct Flash Player to preload variables, and three flags to suppress variables. By setting PreloadParentFlag, PreloadRootFlag, PreloadSuperFlag, PreloadArgumentsFlag, PreloadThisFlag, or PreloadGlobalFlag, common variables can be preloaded into registers before the function executes (_parent, _root, super, arguments, this, or _global, respectively). With flags SuppressSuper, SuppressArguments, and SuppressThis, common variables super, arguments, and this are not created. By using suppress flags, Flash Player avoids preevaluating variables, thus saving time and improving performance. No suppress flags are provided for _parent, _root, or _global because Flash Player always evaluates these variables as needed; no time is ever wasted on pre-evaluating these variables. Specifying both the preload flag and the suppress flag for any variable is not allowed. The body of the function that ActionDefineFunction2 specifies should use ActionPush and ActionStoreRegister for local variables that are assigned to registers. ActionGetVariable and ActionSetVariable cannot be used for variables assigned to registers. ActionDefineFunction2 は、 Flash Player 6 release 65 以降でサポートされます。 リンク ・Activation オブジェクトの解説 http //www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/10_Execution_Contexts.html フィールド 型 コメント ActionDefineFunction2 ACTIONRECORDHEADER ActionCode = 0x8E FunctionName STRING 関数の名前。空の場合匿名 NumParams UI16 パラメータの数 RegisterCount UI8 レジスタの割り当て数。最大255。 (0 から 254) PreloadParentFlag UB[1] 0 = _parent をレジスタにプリロードしない1 = _parent をレジスタにプリロードする PreloadRootFlag UB[1] 0 = _root をレジスタにプリロードしない1 = _root をレジスタにプリロードする SuppressSuperFlag UB[1] 0 = super 変数を作る1 = super 変数を作らない PreloadSuperFlag UB[1] 0 = super をレジスタにプリロードしない1 = super をレジスタにプリロードする SuppressArgumentsFlag UB[1] 0 = arguments 変数を作る1 = arguments 変数を作らない PreloadArgumentsFlag UB[1] 0 = arguments をレジスタにプリロードしない1 = arguments をレジスタにプリロードする SuppressThisFlag UB[1] 0 = this 変数を作る1 = this 変数を作らない PreloadThisFlag UB[1] 0 = this をレジスタにプリロードしない1 = this をレジスタにプリロードする Reserved UB[7] 常に 0 PreloadGlobalFlag UB[1] 0 = _global をレジスタにプリロードしない1 = _global をレジスタにプリロードする Parameters REGISTERPARAM[NumParams] 下記 REGISTERPARAM 参照 codeSize UI16 続くコードのバイト数 REGISTERPARAM フィールド 型 コメント Register UI8 ActionCode ParamName STRING パラメータ名 ActionExtends フィールド 型 コメント ActionExtends ACTIONRECORDHEADER ActionCode = 0x69 ActionCastOp フィールド 型 コメント ActionCastOp ACTIONRECORDHEADER ActionCode = 0x2B ActionImplementsOp フィールド 型 コメント ActionImplementsOp ACTIONRECORDHEADER ActionCode = 0x2C ActionTry フィールド 型 コメント ActionTry ACTIONRECORDHEADER ActionCode = 0x8F Reserved UB[5] ActionCode CatchInRegisterFlag UB[1] ActionCode FinallyBlockFlag UB[1] ActionCode CatchBlockFlag UB[1] ActionCode TrySize UI16 ActionCode CatchSize UI16 ActionCode FinallySize UI16 ActionCode CatchName If CatchInRegisterFlag = 0, STRING ActionCode CatchRegister If CatchInRegisterFlag = 1, UI8 ActionCode TryBody UI8[TrySize] ActionCode CatchBody UI8[CatchSize] ActionCode FinallyBody UI8[FinallySize] ActionCode ActionThrow フィールド 型 コメント ActionThrow ACTIONRECORDHEADER ActionCode = 0x2A 移動 前のページ SWF 7 アクションモデル 次のページ SWF 9 アクションモデル
https://w.atwiki.jp/swfspec/pages/84.html
SWF 4 アクション アクションの種類 アクションの名前 算術演算 ActionAdd ActionDivide ActionMultiply ActionSubtract 数値比較 ActionEquals ActionLess 論理演算 ActionAnd ActionNot ActionOr 文字列操作 ActionStringAdd ActionStringEquals ActionStringExtract ActionStringLength ActionMBStringExtract ActionMBStringLength ActionStringLess スタック操作 ActionPop ActionPush 型変換 ActionAsciiToChar ActionCharToAscii ActionToInteger ActionMBAsciiToChar ActionMBCharToAscii フロー制御 ActionCall ActionIf ActionJump 変数 ActionGetVariable ActionSetVariable ムービー制御 ActionGetURL2 ActionGetProperty ActionGotoFrame2 ActionRemoveSprite ActionSetProperty ActionSetTarget2 ActionStartDrag ActionWaitForFrame2 ActionCloneSprite ActionEndDrag ユーティリティ ActionGetTime ActionRandomNumber ActionTrace 移動 前のページ SWF 4 アクションモデル 次のページ スタック操作