Archive for 8th 8月 2009

swfmillのまったくのメモ

swfmillというFlashをXMLに変換できるツールがあるが、それのまったくのメモです。

2009/08/07

■環境
Windows XP Professional SP3

■ダウンロード
http://swfmill.org/
から以下ファイルをダウンロード

http://swfmill.org/releases/swfmill-0.2.12-win32.zip

ファイル展開してPATH環境変数に追加。今回は以下フォルダに展開。
C:\Work\Tools\SWFmill\swfmill-0.2.12-win32

■実行
・基本
http://swfmill.org/doc/using-swfmill.html#movie
参照
以下XMLファイルをfoo.xmlとして作成し、コマンド実行

swfmill simple foo.xml bar.swf

・既存SWFファイルをXMLに変換する
test.swf(162kb)をtest.xmlに変換する。
swfmill swf2xml test.swf test.xml

test.xmlのサイズは3,056kbになった。(95240行)
実行時間は1秒程度

・XMLからSWFに変換する。
前述で生成したtest.xmlをtest.swfに変換する。

swfmill xml2swf test.xml testnew.swf

実行時間は1秒程度。
作成元のtest.swfのファイルサイズは164,975バイトだが、
新たに作成したtestnew.swfファイルサイズは164,993バイトになっており
若干サイズが増えている。

■Flash Liteのバージョン
携帯でのFlash表示にはFlash Liteというモバイル向けFlash Playerを使用するが、
Flash Lite 1.x系だと、日本語を含んだSWFファイルの変換の際に問題がある。
(swfmillのパッチで対応は可能。以下記事参照
http://dsas.blog.klab.org/archives/51174693.html
)
Flash Lite 2.x以降から対応文字エンコードがUTF-8になったためswfmillでも扱えるファイルとなる。

■テキストフィールド
以下3種類を扱える
・静止フィールド
・ダイナミックフィールド
・テキスト入力

静止フィールドの初期値には値の最後に「 」が入るがこれは改行コードとのこと。
ダイナミックフィールドの場合はこれが入らないので余計な処理をしなくてよい分文字列の置き換えは容易。

■文字列の置き換え
テキストフィールドのようなものはあるが、名前で識別するような方法は難しい。
テキストの初期値にデフォルト値を設定しておき、それを置き換える方法が良い。

■Flash作成(基本)
(1)ダイナミックテキストを作成。
(2)シンボル(ムービークリップ)に変換
(3)変換したシンボルをシーン?に挿入

■ActionScriptでのテキストデータ読み込み
よく見たら、ダイナミックフィールドには変数名が使用できるようだった。
どこで呼び出されるか不明だが、シンボルのアクションに以下ActionScriptを設定すると
データが読み出せる。

loadVariables(”テキストデータファイル名”, “シンボルのインスタンス名”);

■ActionScript付きSWFファイルのXML変換
swfmillを使用してActionScript付きのSWFファイルを変換すると以下のように展開されているよう。

がメソッドのIDなのだろう。
が引数だと思う。

■データサイズと通信サイズの問題