スマフォのブラウザで遊ぶソーシャルゲームでは、Mobageは「ExGame」、GREEは「Reel」または「Theatrical」というSWF変換エンジンが提供されています。その場合は、Flash Lite 1.1でパブリッシュされたSWFファイルを変換してくれるので、JavaScriptを使ってcanvasでガリガリ演出を作るよりは、まだまだFlashが活躍している現状があります。今回は、Flash Lite 1.1で重複しないランダムを作る方法を紹介します。
Flash Lite 1.1では配列が使えません。 配列が使うことさえできれば、いろんな方法がありますが、Flash Lite 1.1はActionScript4相当なので、配列というのがありません。こういう場合は、set()関数とeval()関数を駆使して、重複しないランダムを扱う方法があります。最初に、set()関数とeval()関数のおさらいから。
js 1
2
3
4
5
6
// set()関数は変数を作って値を代入することができます。 set("hensu", "ほげほげ"); trace(hensu); //ほげほげ と出ます。 // eval()関数は文字列で変数を呼び出すことができます。 trace(eval("hensu")); // ほげほげ とでます。 重複しない乱数を作ってみましょう。 0〜19まで数字を20個ランダムで作る例です。
js 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
FlashLite1.xで動的にコンテンツを動かす時に欠かせないのが、loadVariablesで変数をまとめたテキストデータを取得方法があります。FlashLite1.xではムービークリップごとにアクセスするのはドットシンタックスではなくスラッシュシンタックスなので、loadVariablesの第二引数に_rootという記述では変数を取得することができないので、loadVariablesの第二引数に「”/“」と記述します。
と、断言しちゃってますが、Flashのヘルプや他のブログなどをみると、第二引数に_rootとかいているパターンが多く、ブラウザやDevice Centralで第二引数に_rootで正しく動いても、ケータイ端末実機で動かない場合は下記の方法を試してみてください。
Flash Lite 1.xでのloadVariablesの記述 ActionScript 1
2
3
on (press, keyPress "<Enter>") { loadVariables("data.text","/"); //←第二引数で_rootではなく「"/"」スラッシュを書く } loadVariablesはボタンアクションでないと動作しない swfファイルがケータイ端末にロードが完了した瞬間にFlashは再生され、1フレーム目のScriptが実行されます。その瞬間に、loadVariablesが実行されると、swfファイルを読み込んだだけで端末情報が取得できたりしてしまうので、フレームアクションではloadVariablesが実行されないようになってます。これはFlashLite全体の仕様なので、loadVariablesとloadMovieで外部ファイルにアクセスする場合は必ずユーザーさんにボタンアクションをしてもらわなければなりません。パソコンコンテンツとは違い、データを取得して動的に表示させる場合はスムーズに見えるようなUIの工夫が必要になると思います。
Flash Lite 1.1を動的に表現するためにはloadVariablesを使って外部ファイルを読み込む必要があります。loadVariables(“hoge.php”)など、PHPで出力したテキストに対して、auだけうまくloadVariablesできないときがありました。どうやらechoして出力するファイル形式がテキストタイプということを書くと、うまくloadVariablesすることができるみたいです。
PHP 1
2
3
4
/*↓この1行を最初のほうに書いておく*/ header("Content-type:text/plain"); $hoge = "ホゲホゲ"; echo "hensu=".$hoge;
docomo
作ろうiモードコンテンツ:Flash®
au
KDDI au: 技術情報 > 機種別情報一覧
softbank
softbank MOBILE CREATION
iPhoneにしてからすっかりFlash Liteの情報にアンテナを張ることが少なくなってしまいました。最新のFlash Liteのバージョンは3.1になってるんですねー。^-^;
とはいうものの、Flash Lite 1.1でコンテンツを作らざるを得ないのが現状だと思います。しかし、ちょっと凝ったコンテンツを作ろうと思ったらFlash Lite 2.0からじゃないと表現できなかったりします。なんと、docomoはFlash Lite 2.0の端末がないんですよねー。いち早く導入した変わりに、Flash Lite 2.0をとばしてFlash Lite 3.0に対応したみたいです。