swfmill の SWFML simple モードの基本的な使い方はここに書いているのですが、実際はもっと便利なタグがたくさんあります。
swfmill simple コマンドは swfmill xml2swf と同様、XMLからSWFを生成するコマンドですが、xml2swfより使いやすくなっています。
タグ一覧
■基本タグ
・<movie> (ルート要素)
SWFML simple の XML ルート要素です。
属性で swf のパブリッシュ用設定ができます。
全ての属性、および<frame>をのぞく子要素が省略可能です。
FlashLite 1.1 対応にする場合はFlashバージョン4(version=”4″),圧縮なし(compressed=”false”)にしなければなりません。
例: ステージサイズ240×320, フレームレート20fps, Flashバージョン4, 圧縮なしに設定
<?xml version=”1.0″ encoding=”UTF-8″?>
<movie width=”240″ height=”320″ framerate=”20″ version=”4″ compressed=”false”>
<frame />
</movie>
・<meta> (親: <movie>)
swf のメタデータXMLを設定する。
例:携帯(DoCoMo)でメール転送禁止(フォワードロック)に設定する
<movie>
<meta>
<rdf:RDF xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”>
<rdf:Description rdf:about=”” xmlns:swf=”http://ns.adobe.com/swf/1.0/”>
<swf:forwardlock>True</swf:forwardlock>
</rdf:Description>
</rdf:RDF>
</meta>
</movie>
・<background> (親: <movie>)
背景色を設定する。
例: 背景色を黒にする
<movie>
<background color=”#000000″>
<frame />
</movile>
・<frame> (親: <movie>, <clip>)
ムービークリップのキーフレームをあらわす要素で、この中にインスタンスを配置する。
ムービークリップをあらわす<movie>と<clip>の子要素として記述し、これらを定義する時は最低でも1個必須です。
<frame>がなくても動作しますが、誤動作の原因になるため省略すべきではありません。
属性:
name … フレーム名(省略可)
例:2つのキーフレームからなるムービークリップを定義する。
<movie>
<frame>
<!– 1フレーム目 –>
</frame>
<frame>
<!– 2フレーム目 –>
</frame>
</movie>
・<stop> (親: <frame>)
そのフレームを描画後、次のフレームに移らないようストップする。
<movie>
<clip id=”img1″ import=”1.png”>
<clip id=”img2″ import=”2.png”>
<frame>
<!– img1 を表示し、このフレームで停止する –>
<place id=”img1″ depth=”1″/>
<stop />
</frame>
<frame />
<frame />
<frame>
<!– img2 を表示 –>
<place id=”img2″ depth=”1″/>
</frame>
</movie>
・<call>
指定したクラスメソッドをエントリポイントにする(要SMC + α)。
手順については「Adding components]」を参照。
属性:
object … 実行クラス
method … 実行メソッド
■リソース定義
フォント、シンボルなどの定義。
・<library> (親: <movie>, <frame>, <clip>)
<library>内に定義した<clip>, <sound>, <font>などリソース定義をライブラリとしてエクスポートし、
外部からそのリソースを参照できるようにする。
例: シンボル foo, boo をライブラリに登録する。
<movie>
<library>
<clip id=”foo” import=”abc.jpg”/>
<clip id=”boo” import=”def.jpg”/>
</library>
</movie>
・<clip> (親: <movie>, <library>, <frame>)
画像(PNG, JPEG)やムービークリップ(SWF), SVG などリソースを組み込み、参照できるように定義する。
<clip import=””> で指定したファイルはコンパイル時に読み込まれて一緒にビルドされます。
属性:
id … シンボル名(省略時は名前なし)
import … 組み込むリソースのファイル名(省略可)
class … ムービークリップとしてシンボル化するクラス名(省略可。子要素とimport を両方省略時は必須?)
例: 画像ファイル foo.jpg を読み込んでシンボル名 image1 として参照できるようにする。
<movie>
<clip id=”image1″ import=”foo.jpg” />
</movie>
例2: 新規ムービークリップをシンボル myMovie として定義する。
<movie>
<clip id=”myMovie”>
<frame />
</clip>
</movie>
・<font> (親: <library>)
TrueType フォントを組み込み、ActionScript からの参照用に定義する。
・<sound> (親: <library>)
mp3 などサウンドファイルを読み込み、ActionScript からの参照用に定義する。
例:
<library>
<sound id=”sound1″ import=”music.mp3″/>
</library>
・<textfield> (親: <movie>, <library>, <frame>)
テキストを入れるラベルを定義する。
属性:
id … シンボル名
name … 同期する変数名
text … 表示するテキスト
x … X座標
y … Y座標
width …
height …
size …
leading …
wordWrap …
isHTML …
multiLine …
password …
readOnly …
autoSize …
notSelectable …
hasBorder …
useOutlines …
align …
leftMargin …
rightMargin …
indent” …
■インスタンスの配置
ムービークリップ内へのシンボル配置など。
・<place> (親: <frame>)
定義済みシンボルを配置する。
属性:
id … インスタンス化するシンボルの名前(必須)。
name … ActionScript での参照用インスタンス名(省略時は名前なし)
x, y ・・・ 座標(ピクセル。省略時は (0, 0))
depth … 深度(数値で表し、大きいほど手前)
scale … 表示倍率(省略時は 1.0)
例: シンボル image1 をインスタンス化し、座標 (0,50) に等倍配置し、その上に座標 (25,30) にサイズ1/2で配置する。
<clip id=”image1″ import=”foo.jpg” />
<frame>
<place id=”image1″ x=”0″ y=”50″ depth=”1″/>
<place id=”image1″ x=”25″ y=”30″ scale=”0.5″ depth=”2″ />
</frame>
・<import>(親: <frame>)
任意の URL のムービーを動的に読み込み配置する。
ActionScript の loadMovie(url) と同様の動作。
例:
<frame>
<import url=”http://example.com/foo.swf”></import>
</frame>
■その他
・swfmill だけで ActionScript を埋め込む
<movie> や <clip> 内の <frame>〜</frame> に <DoAction> 要素を入れると、
そのフレーム上のアクションスクリプトとして実行できます。
<DoAction>は SWF のアセンブラでの書き方になるため、別環境で作った swf ファイルを swf2xml で変換して <DoAction>以下を抽出するのが楽な方法です。
例: Flash lite 1.1 用 ActionScript を埋め込む。
<?xml version=”1.0″ encoding=”UTF-8″?>
<movie version=”4″ compressed=”false”>
<frame>
<!– ムービークリップインスタンス mc1 を配置(参照用) –>
<clip id=”mc” import=”myMC.swf” />
<place id=”mc” name=”mc1″ depth=”0″ />
<!– 簡単な ActionScript を _root で実行 –>
<DoAction>
<actions>
<!– _root.foo = 123; を実行。 –>
<PushData>
<items>
<StackString value=”/:foo”/>
</items>
</PushData>
<PushData>
<items>
<StackString value=”123″/>
</items>
</PushData>
<SetVariable/>
<!– mc1.msg = “Hello”; を実行 –>
<PushData>
<items>
<StackString value=”mc1:msg”/>
</items>
</PushData>
<PushData>
<items>
<StackString value=”Hello”/>
</items>
</PushData>
<SetVariable/>
<EndAction/>
</actions>
</DoAction>
<!– ActionScript ここまで –>
</frame>
</movie>
参考:
– Using swfmill to create SWFs without Flash(公式)
– swfmill Open Source Flash WiKi
– SWFMLl DTD
swfmil の XML 書式定義