![]() |
今回は新しいクラスを使ってみるね。 |
![]() |
どんなクラス? |
![]() |
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で作った時計を動かしてみよ。 |
![]() |
うん、りょーかい! |
![]() |
じゃあ、今回はここまで。 また次回ね! |