iPhoneでswfアニメーションを再生する魔法のJS
PC用に作ったFlashアニメーションをiPhoneでも使いたいという話があり、
Flashアニメを連番画像で書き出してアニメGIFにする以外に
何かいい手はないかと調べていたところ、Gordon.jsというものを教えてもらいました。
http://github.com/tobeytailor/gordon
JavaScriptでswfを解析し、ベクターグラフィックをSVG形式で描画するため
iPhoneのSafariを含めたSVGが利用できるブラウザであれば
FlashPlayerを使わずswfアニメーションを表示できるようです。
こんな感じ
実際にいろいろ実験してみて気付いたところとしては、
・対応しているのは「FlashPlayer1」向けに書き出されたswfのみ
・画像は表示されない、ベクターのみ(グラデーション可)
・ローカルでは動作しない(環境によるのかも)
FlashPlayer1として書き出すために注意する点としては
・ムービークリップが使えないのでシンボル化するときはグラフィックに
・透明系の描画は使わない(塗り、カラー効果のアルファどちらも)
グラフィックは使い回したり、ループのオプションをループにしても、
置いた数だけ、ループした回数だけ、容量が増えていくので、
長いムービーを作成する際には注意が必要です。
実機での描画スピードですが
上記のサンプルのようなシンプルなものであれば、
3GSだと~25ps、3Gだとその5~7割くらい程度のフレームレートがでていました。
FlashLite(や普通のFlashPlayer)同様、
グラフィックの複雑さによって処理スピードは結構変わりました。
JS自体の容量が30kb程度あるので、使いどころには注意が必要ですが
iPhoneブラウザ上でなめらかにアニメが表示されるのはいいですね。