この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秒
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
このサイトで使用しましたflashソフトはflash mx 2004年版(Flash Japan)- flash8 及び FlashCS3-2007年版です。
 flash講座(フラッシュ講座)は、Yoshioka氏(通称、ひげ親父)による制作です。 コツコツと作られたflash素材(flashアニメ、スクリプト)はユーザーの方により保存変更され動画flash(動画フラッシュ)や携帯flash(待受flash)として利用されて来ました。
 氏は、flashスクリプトについての学習を、パソコン塾講師活躍中に始められ、独立した今も続けておられます。 
  macromedia flashソフトは新しくadobe flash時代に入りましたので、これを機会にflash学習サイトを「flash講座1234」としてリニューアルいたしました。 引き続きご愛顧承りますよう、よろしくお願いいたします。                                                                           (by Hiraoka)
HOME   Flash講座総リスト    flash action script 基本編(1)