静止したグラフィックシンボルは、ひとつのシェイプにまとめられる静止したグラフィックシンボルは、ひとつのシェイプにまとめられるSWF形式を勉強していて、難しいと思った点を記録します。今回は、「静止したグラフィックシンボルは、ひとつのシェイプにまとめられる」です。SWF形式のデータ構造は、画像データを直接画面に表示するのでなく、「シェイプ」という中間構造を介して画面に表示します。一つのシェイプに、二つ以上の画像データを含めることもできます。※シェイプには、画像データの他にベクトル図形も含められるのですが、簡単のために今回は画像データだけを考えることにします。Flashを使って、Flashムービーを作ってみました。(プロジェクトファイルはこちら)アメリカ、ブラジル、イギリスの国旗を、画面に表示するだけの単純なFlashムービーです。SWFファイルを作成すると、こうなります。Flashのエディタ上では、レイヤーを三つ作ってそれぞれに国旗を置いただけです。グループ化などは行っていません。生成されたSWFファイルは、下図のような構造になっていると思いますよね。ところが実際にはそうでなく、下図のような構造になっていました。swfmillを使って、SWFファイルの構造を調べると、以下のようになっていました。※見易さのために、swfmillが出力したテキストを少し変更してあります。変更する前のxmlファイルはこちら。次に、Suzukaを使って、同じ内容のFlashムービーを作ってみました。(プロジェクトファイルはこちら)SWFファイルを作成すると、こうなります。Flashの場合と同じです。Suzukaのエディタ上でも、レイヤーを三つ作ってそれぞれに国旗を置いただけです。Suzukaの場合、生成されたSWFファイルは、直観どおりの下図のような構造になっていました。swfmillを使って、SWFファイルの構造を調べると、以下のようになっていました。※見易さのために、swfmillが出力したテキストを少し変更してあります。変更する前のxmlファイルはこちら。FlashとSuzukaとでは、生成されるSWFファイルの構造が違っていました。Flashは、静止した画像が複数あると、自動的にそれらをまとめてひとつのシェイプに定義する特性があるようです。Suzukaは、個々の画像を別々のシェイプに定義して、判り易い構造のSWFファイルを生成します。Flashの特性はちょっとやっかいです。「ひとつの画像=ひとつのシェイプ」と決め打って、プログラムを単純化するような、手抜きができないからです。Flash上でデータ作成時に気を付けることで済みます。Flashが自動的にシェイプをまとめてしまうので、プログラムはこの構造に対応せざるを得ません。ブログラムでの対応が難しいというほどではないのですけれど、僕は最初手抜きプログラムを作っていて、正しく画像が表示できずに悩みました...(^^;要注意です。(nsawa@piece-me.org)。