setIntervalとEvent.ENTER_FRAME
ゲームを作るのにタイマーが必要になる。
で、Spriteクラスから派生すれば setIntervalメソッドが使えるので、そのまま
setInterval(onTimer,50);
とすれば、50ミリ秒ごとにonTimerメソッドが呼び出される。しかし、これだと、表示のタイミング(フレームレート)とonTimerが呼び出されるタイミングがずれることがある。
たとえば24FPSだと、画面表示はおよそ42ミリ秒ごとに行われるので、50ミリ秒ごとにキャラクタを更新していると、たまに不整合がおきて表示がかくかくしてしまう。
結局、フレームレートを固定して、Event.ENTER_FRAMEを受け取るほうが良いようだ。
フレームレートを指定するには、コンフィグファイル(ファイル名-config.xml)の中で
<default-frame-rate>24</default-frame-rate>
とする(この例では24FPS)。Event.ENTER_FRAMEは、受け取りたいクラス(Spriteの派生クラス)で
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
とすれば、1/24秒に一度 onEnterFrameが呼び出される。このタイミングで画面表示を更新すればアニメーションがスムーズになるようだ。