今回は新しいクラスを使ってみるね。 | |
どんなクラス? | |
Timer クラス だよ。 | |
タイマー…って、時間が経つとアラームが鳴ったりする、あのタイマーのこと? | |
そ、そのタイマー。 でも別にアラームが鳴ったりするわけじゃなくて、時間が経つとイベントが起こるの。 |
|
へぇ、そういうのもイベントなんだ。 | |
うん。Timer クラスには onTimer っていうメソッドがあって、 タイマーにセットした時間が経過すると呼び出されるんだ。 | |
それってどんな時に使うの? | |
一定時間ごとに情報を更新したい時とかだね。 じゃ、タイマーを使った簡単なスクリプトを書いてみるね。 |
|
うん。 |
じゃ、実行してみて。 | |
はーい。 |
<実行結果(実際には時計が動きます)>
あっ、タイトルバーの部分が時計になってる! | |
こんなふうに時計を動かしたりするのにもタイマーが使えるんだ。 | |
じゃあ、タイマーを使えば§3.6で作った時計が動かせるんだよね? | |
うん、もちろん。 でも、その前にスクリプトをチェックしとこ。 |
|
あ、そだね。 | |
まずはコンストラクタから。 Timer クラスのオブジェクトを作る時には、コンストラクタに引数を2つ指定するんだ。 |
|
第1引数が this で、第2引数が "action" になってるね。 この "action" って、もしかして前回の action メソッドのこと? |
|
ん、そうだよ。ちなみに第1引数は action メソッドが呼び出されるオブジェクト。 このスクリプトだと this になってるから、MyWindow クラスの action メソッドが呼び出されるってこと。 |
|
なるほどね。 | |
コンストラクタに指定する引数を変えると、別のメソッドを呼び出すようにすることもできるんだけど、
ここでは説明はパスするね。 詳しくは吉里吉里2リファレンスの『Timer クラス』の項目を参照してね。 |
|
は〜い。 | |
あと、第2引数はデフォルトが "action" になってるから、この場合は省略しても OK だよ。 | |
あ、そうなんだ。 | |
で、最初に設定してる interval っていうプロパティは、タイマーイベントの発生周期なんだ。 | |
タイマーイベントの発生周期って? | |
タイマーイベントは1回起こったらそれで終わりってわけじゃなくて、タイマーを止めたりしない限りは、
設定した時間が経つごとに起こるんだ。 つまり、ここでは interval を 1000 に設定してるから、 1秒ごとにタイマーイベントが起きるってこと。 |
|
そっか、だから周期っていうんだね。 あ、でも何で interval を 1000 にすると周期が1秒になるの? |
|
タイマーの周期は細かく設定できるように、ミリ秒単位になってるからだよ。 | |
えっと、ミリ秒って確か1秒の1000分の1なんだよね? | |
そ。よく知ってるね。 | |
trans タグの time 属性とかがミリ秒単位になってるからね〜。 | |
あー、そういえば kag でもミリ秒って結構使われてたね。 | |
うん。 タイマーの周期も同じように設定できるんだね。 |
|
ん、そういうこと。 で、もう一つの enabled っていうのは、タイマーのスイッチみたいなもので、 true だとタイマーがオンになってて、false だとタイマーがオフになってるってこと。 |
|
ってことは、enabled が true になってないと、タイマーイベントは発生しないってこと? | |
そういうこと。 じゃ、次は action メソッド の方を見てみるね。 |
|
今回はタイマーのイベントを処理するから、ev.target がメンバ変数の timer になってるかをチェックしてるんだね。 | |
そ。で、タイマーにセットした時間が経過すると Timer クラスの onTimer メソッドが呼び出されるから、 ev.type は "onTimer" になってるんだ。 | |
タイマーイベントが起きると、sprintf メソッドを使って、タイトルバーに今の時間を表示するんだね。 | |
ん、そう。 sprintf メソッドの使い方は §3.6 参照ね。 |
|
えっと、interval プロパティを 1000 に設定してるから、 1秒に1回タイトルバーを書き換えることになるんだよね? | |
うん、そういうこと。 タイマーの使い方はわかりやすいでしょ。 |
|
そうだね。これならすぐ使えるようになれそう。 あ、タイマーを止めたい時ってどうすればいいの? |
|
enabled プロパティを false にすればタイマーは止まって、 その後イベントは起こらなくなるよ。 | |
あ、そっか。enabled プロパティってタイマーのスイッチみたいなものなんだもんね。 | |
それじゃ、これでタイマーのことは解ったと思うから、 次回はタイマーを使って、§3.6で作った時計を動かしてみよ。 | |
うん、りょーかい! | |
じゃあ、今回はここまで。 また次回ね! |