画面を横切るメールにキャラクターを飛ばして乗せる(添付する)ゲームを作ります。
作例では、Flash Lite 1.0用のActionScriptからFlash Lite 2.0になったことで利用可能になった4つの機能にフォーカスを当てて製作していきます。
tempme_fla.zip (ZIP: 301k)
Flash Lite 1.1までの自作関数は戻り値、引数の扱えないcall()しかありませんでしたが、Flash Lite 2.0からはfunction()が備わっています。
function sample( a,b ){
var c = a + b;
return c;
}//function
これにより煩雑になりがちだったcall()や変数の処理がまとめやすくなりました。_globalを用いてグローバル関数を作成することも可能です。
_global.sample = function( a,b ){
var c = a + b;
return c;
}//function
この場合どの場所からでも絶対、相対パス指定なしで関数にアクセスすることができるようになります。
次に、溜め撃ちを再現するためにキープレス、キーリリースを使ってみましょう。まずボタンが押されたことを検出するスクリプトを書きます。
onClipEvent(keyDown){
trace("keyDown");
}//onCE
作例のゲームはテンキーの5キーを使って遊びます。テンキーの5キーのキーコードは101です。
このままではキーが押されたら処理が行われてしまうので、テンキーの[5]キーが押されたときに処理を行う用にスクリプトを追加します。
onClipEvent(keyDown){
if( Key.getCode() == 101 ){
trace("[5]KeyDown");
}//if
}//onCE
次に離した瞬間、を検出します。
onClipEvent(keyUp){
if( Key.getCode() != 101 ){
trace("[5]KeyUp");
}//if
}//onCE
押された瞬間から離した瞬間までの時間を計測すれば、特定のボタンがどれだけの時間を押されていたか調べることができます。
この関数は領域の接触を判定する関数で、これを使えば衝突の処理が大変楽になります。
旧来のFlash Liteの方法ですと、以下のような記述が必要でした。
ax = getProperty("a_mc",_x);
ay = getProperty("a_mc",_y);
aw = getProperty("a_mc",_width);
ah = getProperty("a_mc",_height);
bx = getProperty("b_mc",_x);
by = getProperty("b_mc",_y);
bw = getProperty("b_mc",_width);
bh = getProperty("b_mc",_height);
if( aw >= bw && ah >= bh ){
if( ( ax <= bx && bx <= ax + aw ) || ( ax <= bx + bw && bx + bw <= ax + aw )){
if( ( ay <= by && by <= ay + ah ) || ( ay <= by + bh && by + bh <= ay + ay )){
trace("hit");
}//if
}//if
}//if
hitTest()を使うと以下になります
if( a_mc.hitTest( b_mc.hitTest ) ){
trace("hit");
}//if
これにより長くなりがちだった当たり判定が簡単に記述することができるようになりました。
最後に、Flash Lite 2.0の肝とも言えるSheardObjectの取り扱いをやってみます。
これを使うことでアプリケーションの途中経過や、設定の保存などができるようになりました。今回はゲームのハイスコアを記憶する用途に使ってみます。
まずはオブジェクトを生成します。
my_so = SharedObject.getLocal("localData0");
既にデータがあるかどうかは、使用する変数が保存されているかどうかで調べることができます。
if( my_so.data.hiScore == undefined ){
trace("NewGame");
}//if
最後に現在保存されている値より、更新された値が大きかったときにローカルのデータを上書きします。
if( my_so.data.hiScore < newScore ){
my_so.data.hiScore = newScore;
my_so.flush();
}
今回は基本Flash Lite 1.0 構造のスクリプトに2.0の新機能を盛り込む形でサンプルを作成しました。
Flash Lite 1.0に触れていない方は、Flash6以降の記述で製作できるのでPC用の作品を移植するのも簡単になったと思います。
皆さんも携帯端末という特殊な環境下でFlash Liteで何が表現できるか、是非挑戦してみてください。
Alex Michael:モバイルベースのソリューション開発を専門に手掛ける新興メディアカンパニー、Sprite Interactive Ltd.の社長を務める。現在の取引先はVodafone、Orange、T-Mobile、ESPN、Disney、Jamba、Jetixなど。モバイルゲーム・アプリケーション・モバイルペットなど、Sprite社の作品集は製品ショーケースサイトのwww.Handyx.net*でご覧いただけます。