3秒間の連打回数を表示させる



[ボタンイベント][addListener][getTimer][Flash Lite2.0]

あらかじめ設定された時間(サンプルでは3秒)に,どれだけボタンを連打できるか表示する。
開始は,ボタンを押してスタート。
開始すると,連打回数を表示する。ボタンはwaitと表示
終了すると,「おしまい」と表示し,ボタンFINISHと表示

$pandyのプログラミングメモ

・以下のソースをムービークリップstart_btnのアクションとして記述



//終わったときの表示は,最初は非表示にする。
onClipEvent(load)
{
_root.fin_msg._visible = false; //終了メッセージは最初非表示
_root.kai_txt._visible = false; //「回」表示は最初非表示
_root.push_cnt._visible = false; //連打回数は最初非表示
start_flag = false; //開始ボタンを押されているかどうか。
var push_count:Number = 0; //連打回数保持変数。最初は0
}


//ボタンか「5」が押されたら
on(press, keyPress "5" )
{
if( start_flag == false )
{
var start_time:Number = getTimer(); //開始時の時刻取得
var end_time:Number = start_time + 3 * 1000; //終わりの時刻を計算
var now_time:Number; //計測中の時刻取得
var remain_time_msg:Number; //残り秒数表示
}

start_flag = true; //開始したら開始中のフラグをたてる

//ムービークリップが再生されるたびに呼び出される
this.onEnterFrame = function()
{
now_time = getTimer(); //計測中の時刻

if( now_time > end_time ){ //終了予定時刻を越えたら終了処理
_root.fin_msg._visible = true; //終了メッセージを表示
_root.remain_time.text = "0"; //残り秒数表示を明示的に0に
_root.btn_txt.text = "FINISH";//ボタンも終わりを示す文字に変更
delete this.onEnterFrame; //イベントハンドラを削除してメモリ解放
start_flag = false;//終了したら連打を受付ない
stop();
}
//予定終了時刻になっていないときの処理
else
{ //残り秒数を整数にする
remain_time_msg = Math.ceil(( end_time - now_time )/ 1000 );
_root.remain_time.text = remain_time_msg; //残り秒数を表示
_root.btn_txt.text = "2を連打せよ"; //ボタン表示を変える
//以下がないと連続実行した際fin_msgが出っぱなし
_root.fin_msg._visible = false;
}
}
}

//2の連打を受け取る
on( keyPress "2" )
{
if( start_flag == true ) //開始ボタンが押された後であること。
{
_root.push_cnt._visible = true; //連打回数を表示させる
_root.kai_txt._visible= true; //単位「回」も表示させる

push_count++; //回数をインクリメント;
_root.push_cnt.text = push_count;//回数を表示
}
}



何かボタンを押すと次に進むタイトル画面の作成



[ボタンイベント][addListener][Flash Lite2.0]

1フレーム目にキーフレームを入れて,何かボタンを押すと2フレーム目以降が実行される。

$pandyのプログラミングメモ

・適当にオブジェクトを配置する。ボタンを使わないでボタンイベントを拾うサンプルなのでインスタンスも設定しない。
・以下のソースを1フレーム目にアクションとして記述


stop();		//これが無いとすぐに次のフレームに行ってしまう。

var myListener:Object = new Object(); //ボタンに記述しない場合のセオリーか。
Key.addListener(myListener);

myListener.onKeyDown = function()
{
//gotoAndPlay(2)にすると,2フレーム目を実行してすぐにまた戻ってくる・・・
nextFrame();
}


ボタンを押すと,タイマーが作動して,終了を示す



[ボタンイベント][getTimer][ムービークリップ][Flash Lite2.0]

ボタンではなく,ムービークリップにon(press)を記述してタイマーを作成。

pandyのプログラミングメモ

・ダイナミックテキストを用意して,インスタンス名はremain_time
・ダイナミックテキストを用意して,インスタンス名はfin_msg
・ダイナミックテキストを用意して,インスタンス名はbtn_txt
・ムービークリップを用意して,インスタンス名はbrn_txt

・開始時刻保持用に,var start_time:Number
・終了時刻保持用に,var end_time:Number
・計測中の時刻取得,var now_time:Number
・残り秒数表示用に,var remain_time_msg:Number
・以下のソースをムービークリップstart_btnにアクションとして記述



//終わったときの表示は,最初は非表示にする。
onClipEvent(load){
_root.fin_msg._visible = false;
}

//ボタンか「5」が押されたら
on(press, keyPress "5"){
var start_time:Number = getTimer(); //開始時の時刻取得
var end_time:Number = start_time + 3 * 1000; //終わりの時刻を計算
var now_time:Number; //計測中の時刻取得
var remain_time_msg:Number; //残り秒数表示

//ムービークリップが再生されるたびに呼び出される
this.onEnterFrame = function(){
now_time = getTimer(); //計測中の時刻
if( now_time > end_time ){ //終了予定時刻を越えたら終了処理
_root.fin_msg._visible = true; //修了メッセージを表示
_root.remain_time.text = "0"; //残り秒数表示を明示的に0に
_root.btn_txt.text = "FINISH"; //ボタンも終わりを示す文字に変更
delete this.onEnterFrame; //イベントハンドラを削除してメモリ解放
}
//予定終了時刻になっていないときの処理
else
{
//残り秒数を整数にする
remain_time_msg = Math.ceil(( end_time - now_time )/1000 );
_root.remain_time.text = remain_time_msg; //残り秒数を表示
_root.btn_txt.text = "Wait"; //ボタン表示を変える
_root.fin_msg._visible = false; //これがないと連続実行した際fin_msgが出っぱなし
}
}
}




・celiはその数値以上の最も近い整数にする
Mathクラスのメソッド一覧
・start_btnのムービークリップにアクションを書いているため,_rootを書かないと他のオブジェクトにアクセスできない。