android-JS-Flashの連携について
おひさしぶりの、hidakaです。
去年、Flashブログのlevel0に延々Android記事ばかり書いてたらFlashの事を書けと言われて半年ほど消えていました。
しかし時代は変わり、level0に堂々とandroidの事を書けるようになったのです。OS2.2からFlash
player 10.1載ったことですしみんな大好きスマートフォンでFlashがみれるようになったにも関わらず
世の中スマホFlashの話題が不足している。FlasherのほとんどはFlash動かないスマホに走ったとか
そんなことは無視で。
うん、情報なさすぎてびっくりした。みんなブラウザ上でみれればいいのね、そーなのね。
でもFlashが動くのはブラウザだけじゃないんですよ。アプリ内でも動くんですよFlash。
そしてアプリ内にHTMLエリアを作って、そこにFlashを表示するわけですが、アプリとwebview(HTMLエリア)
のJSは関数呼び合うことができます。
つまりJSとFlashも連携できてしまえばアプリとFlashが連携できるわけです。
それが下の例。下側がHTML領域。端末はNexus One、OS2.2、FP10.1です。
上のEditTextに入れたテキストをJSに渡し、JSがswfObjectを使ってHTML枠にFlashを
表示しています。夕方5時前はおなかすいているのです。
これならべつにTextviewに表示すればいいじゃないってわけですが、よく見ましょう。
フォントが普段と違います。SWFに埋め込んであります。
Flashのテキストフィールドの数少ない(本当に少ない、本当に。冗談じゃなくほんと。)GJな機能として、
文字を指定して埋め込むことが可能です。
またテキスト以外にもFlashはタイムラインアニメーションが使えるという利点があります。
PNG画像をたくさん使ってアニメーションさせたりしなくても、コードを延々書いてアニメーションを書かなくても
アニメGIFで荒いの作ったりしなくてもアニメーションが可能です。
今回の処理の流れ
Java→JS呼び出し(パラメータに文字列)→SWFObjectでFlash描画(flashvarsでパラメータもらう)
AS側のコードはこれだけ。動作検証用なので変数の適当っぷりが伺えます。
var vars:Object = loaderInfo.parameters;
var a1:String = "default value";
if (vars["onFlashText"] != null ) {
a1=vars["onFlashText"];
}
tt.text=a1;
このあたり参考で。
Java→JSの参考
Webブラウザビューチュートリアル
swfObject + flashvars