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