swfmillとは、swfファイルを解析してxmlファイルに変換したり、逆にxmlからswfファイルを生成することができるツールである。内部的にMTASC(前回紹介した:MTASC(Motion-Twin ActionScript2 Compiler): フリーのコマンドラインActionScript(Flash)コンパイラを参照してください)を利用し、FlashのSWFファイルを生成とする。
SWF内に画像やフォントが埋め込まれている場合、それらを取り出してdataとしてXML内に出力することができる。なので、そのXMLを再度SWFにすると、画像も再現されるのだ。これができるのは凄い。とは言え、SWFからXMLを生成し、再度SWFを生成し直したときの再現は完璧ではない。アクションの一部はうまく動作しなくなった。だが、画像のスライドショー等、簡単なSWFであれば十分XMLをベースに生成できそうだ。簡単でと言えば、SWFMILLでできること:
・外部画像のシンボル化:このシンボルにリンケージを付けてAS2からアタッチムービーできるようになる。
・外部SWFのシンボル化:このシンボルにリンケージを付けてAS2からアタッチムービーできるだけでなく、外部SWF内の子要素MCまでアクセスできる。
・外部音声データのシンボル化
・MCの生成:AS2を使わなくとも、ライブラリーからシンボルをステージにドロップしてインスタンスを生成するようにステージにMCを生成できる。
・キーフレームの生成:タイムラインを生成できる。
・フォントの埋め込み
・テキストフィールドの生成
swfmillのインストール条件
swfmillはいくつかの依存ライブラリがあるため、必要なライブラリがインストールされていないとインストールできません。
それぞれのライブラリがインストールされているかどうかは環境によって異なりますのでそれぞれ対応して下さい。
たとえば、libxmlが不足していると別途インストールするひつようです。
また、コンパイル及びインストールを行う必要がありますので、root権限とgccコンパイラのあるサーバー環境が必要です。
swfmillのインストール手順
swfmillをダウンロードします。
- [root@host src]# wget http://swfmill.org/releases/swfmill-0.2.12.tar.gz
ダウンロードしたファイルを解凍し、解凍したディレクトリに移動します。
- [root@host src]# tar xzf swfmill-0.2.12.tar.gz
- [root@host src]# cd swfmill-0.2.12
Flash1.1に対応できるようにパッチをダウンロードして適用します。
- [root@host swfmill-0.2.12]# wget http://lab.klab.org/files/flash/encoding.patch
- [root@host swfmill-0.2.12]# patch -p1 < encoding.patch
ビルドしてみます。
- [root@host swfmill-0.2.12]# ./configure
- …
- checking for XML... configure: error: Package requirements (libxml-2.0) were not met:
- No package 'libxml-2.0' found
xmlのライブラリが足りないようでしたので必要なライブラリをインストールします。
- [root@host swfmill-0.2.12]# yum install libxslt-devel
再度ビルドします。
- [root@host swfmill-0.2.12]# ./configure
ビルドが成功したのでインストールします。
- [root@host swfmill-0.2.12]# make
- [root@host swfmill-0.2.12]# make install
インストールが成功しました。
使い方:
SWFをXMLに変換する
- $ swfmill swf2xml main.swf main.xml
XMLをSWFに変換する
- $ swfmill xml2swf main.xml main.swf
画像・音声の入れ替え
元の画像ファイルと変更する画像ファイルを用意する(PHPソースコード)
- $search = base64_encode($befor_img);
- $replace = base64_encode($after_img);
- $xml_str = file_get_contents('main.xml');
- $xml_str = str_replace($search, $replace, $xml_str);
画像の抽出が上手く行かない場合
- $search = base64_encode("\xFF\xD9\xFF\xD8".$befor_img);
- $replace = base64_encode("\xFF\xD9\xFF\xD8".$after_img);
テキストフィールドの書き換え
- tags->DefineEditText @ initialText = テキスト
- tags->DefineEditText->color->Color @red @green @blue = 色
を書き換える
アクションスクリプトを書き換える
変数
- tags->DoAction->actions->PushData->items->StackString @ value = 変数名
- tags->DoAction->actions->PushData->items->StackString @ value = 値
- tags->DoAction->actions->SetVariables
パスの色やムービークリップ等をそのままごっそり入れ替える
- tags->DefineShape2 -> グラフィックシンボル
- tags->DefineSprite -> MovieClip (インスタンス化されている)
リソース:
・http://swfmill.org/ ホームページ
・http://blogs.yahoo.co.jp/k3_labs/3077231.html FlashDevelopからSWFMILLを巧く使うチュートリアル
・http://packages.ubuntu.com/ja/source/intrepid/swfmill swfmill 関連パッケージ
Posted on Sunday, 1st February 2009 by admin
Tags: SWF, swfmill, XML, オープンソース, ツール
Posted in Flash Project | Comments (1) | 33,447 views

June 1st, 2009 at 6:00 pm
[...] e@host hoge]# swfmill -e cp932 xml2swf hoge.xml hoge.swf 参考サイト ・swfmill: swfファイルとXMLファイルを相互変換するオープンソースツール インストールから、swfmillの相互変換までの要点がわかり [...]