タイマー


今回のお題は"タイマー"です。
タイマーを使ってアニメーションやゲームが作れますね。

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;
....