このFlash講座1234は,flashソフトを用いてflashアニメなどの制作をスクリプトを通して無料で公開したものです。![]() |
||
| FLASH講座ーアクションスクリプトの実践的事始めー 基本編 (11) ストップウオッチ・タイマー |
||
| 前回の時計に続いて、定番ともいえるストップウオッチとタイマーです。 これらのスクリプトには、時計の時に用いたsetIntervaは使ってません。 setIntervalは指定したミリ秒間隔で動作を繰り返すスクリプトですが、間隔を刻む正確さが、フレームレートやパソコンのパフォーマンスによって影響される。 したがって、ミリ秒単位で時間をカウントする今回のようなスクリプトには使わない方がいいようです。 従ってここでは、getTimerを使って、ミリ秒単位の計測を行う方法をとりました。 |
||
| 1.ストップウオッチ | ||
| ステージの準備 ●ステージ(200×100、60fps)にダイナミックテキストボックスを作成し、インスタンス名を、例えばtimeとする。 このボックスの背後に矩形を描画して美しく見せたりする ●コンポーネントのUserInterfaceからボタンを3つドラッグしてステージにドロップする(もちろん、しゃれたデザインのボタンを別途描くか調達してもよい) ●ボタンのラベルをstart、stop、clearとし、インスタンス名をstart_btn、stop_btn、clear_btnとし、startとstopボタンはstartを上にして重ね合わせる ●以下のスクリプトを、FRAME1で記述する |
||
time.text = "00:00:00:00";
var msp = 0;
start_btn.onRelease = function() {
ms0 = getTimer();
setOn = true;
mx.behaviors.DepthControl.sendBackward(start_btn);
};
stop_btn.onRelease = function() {
setOn = false;
msp = ms*10;
mx.behaviors.DepthControl.sendBackward(stop_btn);
};
clear_btn.onRelease = function() {
setOn = false;
ms = 0;
msp = 0;
time.text = "00:00:00:00";
mx.behaviors.DepthControl.sendBackward(stop_btn);
};
_root.onEnterFrame = function() {
if (setOn) {
if (msp) {
ms = (getTimer()-ms0+msp)/10;
} else {
ms = (getTimer()-ms0)/10;
}
hr = Math.floor(ms/100/60/60%60);
mn = Math.floor(ms/100/60%60);
sc = Math.floor(ms/100%60);
dl = Math.floor(ms%100);
if (sc<10) {
sc = "0"+sc;
}
if (mn<10) {
mn = "0"+mn;
}
if (hr<10) {
hr = "0"+hr;
}
if (ml<10) {
dl = "0"+dl;
}
time.text = hr+":"+mn+":"+sc+":"+dl;
}
};
注)msp はstopボタンが押されたときのタイム(ms)を記憶するための変数で、クリアボタンが押されない限り生きていている。次にstartボタンが押されたら、経過時間(ms)をその上に積算する。 |
ダイナミックテキストボックスtimeの初期表示 変数mspを0に startボタンが押されたら 経過時間(ミリ秒)を取得 setOnをtrueに startボタンを背後に stopボタンが押されたら setOnをfalseに msの10倍(ミリ秒)でmspを取得 stopボタンを背後に clearボタンが押されたら setOnをfalseに msを0に mspを0に 表示を初期に戻す stopボタンを背後に もしsetOnが true なら もし msp が正なら startからの経過時間を取得し msp を引く そうでなかったら(falseなら) startからの経過時間をmsとする 1/100秒単位から時間単位への換算 分単位 秒単位 1/100秒単位 もし秒が一桁なら その前に0を表示 時間経過の表示 |
|
| 2.タイマー | ||
| ステージの準備 ●ステージ(200×100、60fps)にタイマー設定用のインプットテキストボックスを配置する。 ここでは短い時間で確認できるように、秒単位を設けているが、普通は分単位のみ、あるいは、時間単位を加えることになろう。 ここでは、分のボックスの変数をtime1、秒の変数をtime2とした ●その下に、ストップウオッチに使った表示用ダイナミックテキストボックスを配置 ●次いで、start、clearの二つのボタン ●最後に、メッセージ表示用ダイナミックテキストボックス(msg)を配置 ●FRAME1に次のスクリプトを書き込む |
||
set_btn.onRelease = function() {
if (time1) {
time1 = time1;
} else {
time1 = 0;
}
if (time2) {
time2 = time2;
} else {
time2 = 0;
}
setTime = Number(time1*6000+time2*100);
timeCal(setTime);
time.text = mn+":"+sc+":"+ml;
msg.text = "";
};
start_btn.onRelease = function() {
if (!setTime) {
msg.text = "時間がセットされていません";
} else {
ms0 = getTimer();
timerOn = true;
}
};
clear_btn.onRelease = function() {
timerOn = false;
ms = 0;
time.text = "00:00:00";
time1 = time2="";
msg.text = "";
};
_root.onEnterFrame = function() {
if (timerOn) {
ms = setTime-(getTimer()-ms0)/10;
if (ms>0) {
timeCal(ms);
time.text = mn+":"+sc+":"+ml;
} else {
ms = 0;
setTime = "";
time.text="00:00:00";
msg.text = "時間になりました";
}
}
};
function timeCal(ms) {
mn = Math.floor(ms/100/60%60);
sc = Math.floor(ms/100%60);
ml = Math.floor(ms%100);
if (sc<10) {
sc = "0"+sc;
}
if (mn<10) {
mn = "0"+mn;
}
if (ml<10) {
ml = "0"+ml;
}
}
|
setボタンが押されたら time1が正数なら time1をtime1に そうでなければ time1を0に setTimeとして入力された時間を1/100秒でセット 関数timeCalをsetTimeを引数として実行 テキストボックスtimeに表示 メッセージボックスの表示は無しに startボタンが押されたら もしsetTimeが正数でなければ テキストボックスmsgに表示 そうでなければ(実数が存在すれば) 経過時間をms0として取得する timerOnをteueに clearボタンが押されたら timerOnをfalseに msを0に time1、time2をキャンセル メッセージを消す timerOnがtrueなら セッティングタイムから経過時間を引く もし、msが正なら msを引数に関数timeCalを実行 残り時間を表示 そうでなければ(終了したら) msを0に setTimeをキャンセル 表示を元に 終了メッセージ 関数 timeCal 分 秒 1/100秒 |
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
| HOME Flash講座総リスト flash action script 基本編(1) | ||
![]()