PlaceObject2 タグは、PlaceObject タグの機能を拡張したものです。 PlaceObject2 タグはキャラクタを表示リストに追加すること、既に表示リストに存在するキャラクタの属性を変更することの両方が可能です。 PlaceObject2 タグは SWF 4 ~ 5 にかけてわずかに変更されました。SWF 5 では、クリップアクション が使用可能になります。
このタグはフラグのグループから始まり、どのフィールドを使用するかを示します。 CharacterId, Matrix, ColorTransform, Ratio, ClipDepth, Name, ClipActions がオプションで使用可能です。 Depth フィールドだけは常に必要となります。
depth は キャラクタのスタック順を決定します。 低い depth のキャラクタは、高い depth のキャラクタの下に表示されます。 depth が 1 のキャラクタは、スタックの一番下に表示されます。 1 つのキャラクタには、 1 つだけの depth が与えられます。 これは、表示リスト中のキャラクタが depth により一意に定まることを意味します (CharacterId を必要としません)。
PlaceFlagMove と PlaceFlagHasCharacter タグは、キャラクタを新しく表示リストに追加するか、既に表示リストに存在するキャラクタを変更するか、どちらか 1 つを指します。
フラグの意味は次の通りです。
例えば、一続きのフレームにまたがって移動するキャラクタの、最初のフレームで PlaceFlagHasCharacter がセットされていて、 PlaceFlagMove がそれ以降のフレームでセットされるとします。最初のフレームでは指定した depth と変形行列でキャラクタを作成します。続くフレームでは指定した depth にあるキャラクタの変形行列を入れ替えます。
PlaceObject2 のオプションのフィールドは次のような意味になります。
最小のファイルフォーマットバージョンは SWF 3 です。
フィールド | 型 | コメント |
Header | RECORDHEADER | タグタイプ = 26 |
PlaceFlagHasClipActions | UB[1] |
SWF 5 以降: クリップアクション有り = 1 (スプライトキャラクタのみ) 他の場合: 常に 0 |
PlaceFlagHasClipDepth | UB[1] | クリップ depth 有り |
PlaceFlagHasName | UB[1] | name 有り |
PlaceFlagHasRatio | UB[1] | ratio 有り |
PlaceFlagHasColorTransform | UB[1] | 色変換有り |
PlaceFlagHasMatrix | UB[1] | matrix 有り |
PlaceFlagHasCharacter | UB[1] | キャラクタの配置 |
PlaceFlagMove | UB[1] | キャラクタの移動の定義 |
Depth | UI16 | キャラクタの深度 |
CharacterId | If PlaceFlagHasCharacter UI16 | 配置するキャラクタの ID |
Matrix | If PlaceFlagHasMatrix MATRIX | 変形行列データ |
ColorTransform | If PlaceFlagHasColorTransform CXFORMWITHALPHA | 色変換データ |
Ratio | If PlaceFlagHasRatio UI16 | |
Name | If PlaceFlagHasName STRING | キャラクタの名前 |
ClipDepth | If PlaceFlagHasClipDepth UI16 | Clip depth (クリッピングレイヤー参照) |
ClipActions | If PlaceFlagHasClipActions CLIPACTIONS | SWF5 以降: クリップアクションデータ |
クリップアクションはスプライトキャラクタでのみ有効になります。 クリップアクションはスプライトキャラクタのイベントハンドラを定義します。
フィールド | 型 | コメント |
Reserved | UI16 | 常に 0 |
AllEventFlags | CLIPEVENTFLAGS | クリップアクションで使用される全てのイベント |
ClipActionRecords | CLIPACTIONRECORD [1 つ以上] | 個々のイベントハンドラ |
ClipActionEndFlag |
If SWF version <= 5, UI16 If SWF version >= 6, UI32 |
常に 0 |
フィールド | 型 | コメント |
EventFlags | CLIPEVENTFLAGS | このハンドラで適用するイベント |
ActionRecordSize | UI32 | このフィールド以降で次の CLIPACTIONRECORD (または ClipActionEndFlag) までのバイトオフセット |
KeyCode |
If EventFlags contain ClipEventKeyPress: UI8 Otherwise absent |
トラップするキーコード (DefineButton2 参照) |
Actions | ACTIONRECORD [1 つ以上] | 実行するアクション |