タイマーによるアニメーション/イベント

[目次|前回|次回|携帯Javaのページ|ローカルドキュメント]
Time-stamp: "2006-11-02 Thu 13:13 JST hig"

タイマーによるアニメーション

これまでのアニメーションは, スレッドを作り, その中で sleep を含む while ループを回すことにより, 時間的にほぼ一定間隔で, 特定の処理が実行される, という仕組みによるものでした.

ここでは, もうひとつ, 別の仕組みでアニメーションをしてみましょう. Timer クラスを使うと, 一定時間後に(あるいは一定時間ごとに繰り返し)特定のメソッドを呼び出すことができます.

呼び出される特定のメソッドは iアプリと MIDP(V/EZアプリ)で少し違います. iアプリの場合 Timer クラスの setListener メソッドで指定されたクラスの, TimerExpired メソッドです. MIDPの場合 Timer クラスの schedule メソッドで指定されたクラスの, run メソッドです.

次の例TimerAnimSampleを参考に, Canvas クラスで2画像切り替えのアニメーションをしましょう.

今回の例は, また画像ファイルが必要です.
ファイル名gifpng
pose0.gif
pose1.gif

タイマーによるイベント

アニメーションの例では, 比較的短い時間で繰り返し発生する Timer を使いました. もう少し長い時間にタイマーを使えば, ゲーム開始後ちょうど1分で UFO 出現, みたいなことが 簡単にかつ正確にできます(スレッドをつかって, 1分間 sleep した後 UFO 出現, でも似たようなことができるわけですが). キッチンタイマーなども作れます(これは時刻を取得するメソッドを使って, 時刻の差を計算するほうがいいかもしれませんが)

課題1

これまでに作ったアニメーションに, 1分ごとに背景の色が変るとか, 3分後にボスキャラが出現するとか, 5分後にゲームのやり過ぎすよというメッセージがでるとか, 何かタイマーを使った機能を追加しよう.

課題2

これまでに作ったアニメーションを, Thread を使うのをやめて, Timer を使って書き直してみよう.