スタート・ストップボタンを作成する
以下の部分ではスタート・ストップボタンを押したときの処理を指定しています。startButton.onRelease = function(){分解して見ていきましょう 。
if(startFlag == false){
if(firstFlag == false){
_root.startTime = getTimer() - _root.dispBaseTime;
firstFlag = true;
}
_root.onEnterFrame = displayUpdate;
startFlag = true;
}else{
_root.onEnterFrame = null;
startFlag = false;
}
}
startButton.onRelease = function(){ }この部分はインスタンス「startButton」を押したときに{ }の処理を行うという意味です。今回はActionScriptをまとめて書きたかったのでボタンをムービークリップとし、この形式で記述しています。
if(startFlag == false){if文が二つ組み合わされています。「startFlag」というのは後に記述するスタートボタンが押された後かどうかを示す変数です。「false」の場合はまだスタートボタンを押していないので、以降の処理を実行します。
if(firstFlag == false){ }
}else{ }
次の行では一時停止した後スタートボタンが押されたかどうかを示す変数「firstFlag」を判定しています。「false」の場合は新規に0からカウントアップする場合です。
_root.startTime = getTimer() - _root.dispBaseTime;「if(firstFlag == false){ }」内の処理です。1行目で変数「_root.startTime」でスタートボタンを押した時間を取得しています。
firstFlag = true;
2行目でスタートボタンを押したことを判定する変数「firstFlag」に「true」を代入し、スタートボタンを一度以上押し、計測を開始たことを記録します。
_root.onEnterFrame = displayUpdate;if文「if(firstFlag == false){ }」の後の処理を記述しています。
startFlag = true;
1行目で、先ほど記述した時間を表示する関数を呼び出しています。
2行目でスタートボタン押したことを記録しています。
_root.onEnterFrame = null;if文「if(startFlag == false){ }」が否だった場合の処理です。既にスタートボタンが押されている場合に、ストップボタンとして機能するような処理になります。
startFlag = false;
1行目で実行している関数「_root.onEnterFrame = displayUpdate;」の実行を終了しています。
2行目でストップボタンを押し、計測を停止していることを記録します。
リセットボタンを作成する
以下の部分でリセットボタンの機能resetButton.onRelease = function(){分解して見ていきましょう。
_root.nowTime = 0
_root.startTime = 0;
_root.dispBaseTime=0;
_root.startFlag = false;
_root.firstFlag = false;
_root.onEnterFrame = null;
time.text = "00:00:00";
}
resetButton.onRelease = function(){ }リセットボタンを押したとき{ }の処理を実行します。
_root.nowTime = 0計測に使用した変数をリセットします。
_root.startTime = 0;
_root.dispBaseTime=0;
_root.startFlag = false;
_root.firstFlag = false;
_root.onEnterFrame = null;リセットボタンを押したとき、計測中の場合を考え関数を停止しています。
time.text = "00:00:00";テキストボックス内の時間表示を初期化します。
完成したファイルをダウンロード
今回はFlashガイドサイト初の長文ActionScriptになりましたが、どうだったでしょうか。ストップウォッチは簡単そうに見える割に細かな処理の分岐が多く難しい課題です。
とは言っても、コピペすれば簡単に動きます!というと自虐的ですが、皆さんも秋の夜長を利用してオリジナルストップウォッチを作成してください。