時間や日付を利用する時は、日付オブジェクトを使用する。
まず、日付オブジェクトを作成する。
日付オブジェクト名 = new Date();
これにより、これを実行した瞬間の、日付・時間に関する情報が、全て日付オブジェクトの中に入る。
例えば、21時15分にこれが実行された場合、この中に入っている情報は常に21時15分であり、自動的に更新されたりはしない。
またこれらはPCの時計を利用しているので、厳密に正しい時間は取得できない。
日付オブジェクト名は、ひとつの日付オブジェクトにつける名前であり、変数と同じ規則で命名する。スプライトにおけるインスタンス名と同じである。
日付オブジェクトが作成されると、以下のような変数が利用出来る。
日付オブジェクト名.getFullYear()西暦(4桁) 日付オブジェクト名.getMonth()月(0~11)
実際に使う際には1を足すこと 日付オブジェクト名.getDate()日(1~31) 日付オブジェクト名.getDay()曜日(0~6)
0から順に、日月火水木金土 日付オブジェクト名.getHours()時(0~23) 日付オブジェクト名.getMinutes()分(0~59) 日付オブジェクト名.getSeconds()秒(0~59) 日付オブジェクト名.getMilliseconds()ミリ秒(0~999) 日付オブジェクト名.getTime()1970年1月1日0時0分から数えた経過ミリ秒
例えば、現在の時刻を、txtというテキストに表示したい場合は、以下のようになる。
dt = new Date(); //日付オブジェクトdtを作成 txt = "現在 " + dt.getHours() + "時" + dt.getMinutes() + "分" + dt.getSeconds() + "秒";
時計のように自動的に更新されるようにするには、
1.日付オブジェクトを作成する
2.それを元に表示する
という作業を延々続ければよい。
さて日付オブジェクトで利用出来る変数の中で、いまいち使い道がピンと来ないのがgetTime()である。
これは今も延々と1ずつ増えている数であり、計測に利用する事が出来る。
時間を測りはじめる瞬間と、測り終わる瞬間で別々にgetTime()を記録しておき、その差を求めれば、ミリ秒単位での時間がわかる。
実際にgetTime()にどんな数が入っているかは全く気にしなくてよい。
//計測開始 dt = new Date(); start_time = dt.getTime(); //計測開始時点のgetTime()を記録 //計測終了 dt = new Date(); end_time = dt.getTime(); //計測終了時点のgetTime()を記録 //計測 sa = end_time - start_time; //差を求める(この時点で単位はミリ秒) sa = sa / 1000; //なので1000で割って「秒」にする txt = "結果は" + sa + "秒でした";
また、似た命令でgetTimer()を使う方法がある。
これは日付オブジェクトとは関係ない。
getTimer()の中には、FLASHを実行し始めてから何ミリ秒経ったかが常に入っているので、getTime()と同じノリで使うことができる。
日付オブジェクトを利用し、以下のような時計を作成せよ。
曜日の表示が面倒であれば以下のような方法がある。
//あらかじめ、このような配列変数を用意しておく yobistr = ["日","月","火","水","木","金","土"]; //このようにすれば曜日の1文字が表示出来る txt = "今日は " + yobistr[dt.getDay()] + "曜日";
日付オブジェクトを利用し、ストップウォッチのようなものを作成せよ。
「スタート・ストップ」のボタンを押すと、
1.計測中でない場合は、計測を(0秒から)開始する。計測中は経過時間を表示し続けること。
2.計測中の場合は、計測を終了する。
ヒント:
例えば、
mode == 0 の時、計測していない mode == 1 の時、計測中のような変数を用意して管理し、ボタンアクションの中でそれぞれの処理をする。