タイマー
今回のお題は"タイマー"です。
タイマーを使ってアニメーションやゲームが作れますね。
iアプリ用APIでは、タイマーの役目を果たすクラスとして
Timer
ShortTimer
の2つのがあります。
今回はShortTimerを使います。
ShortTimerの方が動作が軽いらしいです。
宣言して
ShortTimer timer;
セットしてスタートして
public void start()
{
timer = ShortTimer.getShortTimer(this, TIMER_ID, 1000/10, true);
timer.start();
}
イベントを受け取る
public void processEvent(int type, int param)
{
if( (type == Display.TIMER_EXPIRED_EVENT) && (param == TIMER_ID) )//タイマーイベント?
{
//処理内容
}
}
それだけです。
簡単でしょ?
注意点としては、
タイマーが動くのはタイマーのリスナー(ここではCanvas)が表示されている間のみ
ということです。
私はコンストラクターでタイマーをスタートして、
何で動かないんじゃ〜!としばらく悩みました。。。
サンプルコードはこちらです。
補足ですが、
サンプルコードでは、ついでにイベント処理の場所を、
タイマーループの中にかえてみました。
現在のキーの状態を取得するAPIgetKeypadStateを使っています。
フレームごとにキー判断をするゲームなどはこちらの方が使いやすそうです。
int key = getKeypadState();
if( (key & (1<<Display.KEY_DOWN ) ) != 0 ) y += 4;
....