アプリケーション固有に実装すべき処理は、以下の3つになるはず。
- ENTER_FRAMEイベントを受けて処理される、ループ内処理の本体
- ループ開始前で処理される、前処理
- ループ処理完了後に処理される、後処理
ただし、常に3つすべて必要になるわけではないので、省略可能とする。これらの処理を制御するためのメソッドは次の5つ。
- start()...ENTER_FRAMEイベントリスナーを登録し、ループ処理を開始する。このメソッドを実行する前に、前処理は実行されている。
- pause()...ループ処理を一時停止する。実際には、ENTER_FRAMEのイベントリスナーの登録を解除する。再度イベントリスナーの処理を開始したければ、resume()を呼ぶ。
- resume()...pause()により一時停止されたループ処理を、再開する。
- revert()...ENTER_FRAMEのイベントリスナーの登録を解除して、前処理を再度実行したところで止まる。再度、イベントリスナーを登録したければ、start()を呼ぶ。
- skip()...ループ処理の完了を待たずに、ループを抜け(すなわち、イベントリスナーの登録を解除し)、直ちに、後処理を実行する。
- 各状況において、適切でないメソッドを呼んだ場合、何も実行されない。たとえば、pause()を実行した後に、start()を実行しても何も実行されない。
言葉で書くとややこしいが、絵にしてみるとこんなフローを制御できるクラスになるはず。…といいながら、このアニメーションもすでに、このクラスで実装されているのだが…。
このクラスを使った実装例を次回に紹介したい。