永久ループ
iαppliはスレッドを永久ループさせる事によって実現させています。永久ループ ―Endless Loop― とはその名の通り終わりの無いループの事で、
今回はrun()メソッド内のfor(;;)を指す事とします。
public void run() {
  for (;;) {
    :
    :
  }

}
永久ループを担う部分はfor文ですから、その専用ステートメントも当然使用可能です。ループを操作する代表的なステートメントとしてbreak文がありますが、これは永久ループを抜け出してしまうので、通常は使えません。
continue文の利用
それに対し、continue文は"ループの頭に戻る"という制御をします。
continueの動き
このcontinue文を用いる事によって、スレッドで扱う処理に順位をつける事が可能です。
次の例を見て下さい。
for (;;) {
  repaint(0, 0, 240, 240);
  moveSystem();
  keyMovement();
}
これはまず1.再描画をし、2.システムを管理し、そして3.キー入力を判定するという順序で組まれたスレッドです。
この内確実に処理したいのは1.再描画です。repaint()は一番先頭に持って来ておきましょう。
次に画面全体を把握する2.システム管理も、1.と同様に必ず処理したい部分です。
最後に3.キー入力判定ですが、これは必ずしも処理される必要はありません。
例えばデモ画面や画面を切り替えている最中等は、特にキー入力を受け付ける必要は無い筈です。寧ろ意図的にキー入力を遮断したい場合さえある筈です。
そこで、keyMovememt()の前にcontinue文を置きます。勿論毎回このcontinueを通る訳ではありませんから、何かしらの条件が合致した場合のみ、continueさせる事にします。
今回の場合だと"デモ画面等を除いた通常画面時"です。ではこの処理を組んでみましょう。
for (;;) {
  repaint(0, 0, 240, 240);
  moveSystem();
  if (system != 1) {
    continue;
  }

  keyMovement();
}
通常画面時にはフィールドsystemが1の値を持つとしていた場合、if文は上記の様に組みます。これで"通常画面時以外はキー入力は無視される"という処理を組む事が出来ました。
条件分岐+continue
この様にcontinue文をif文による条件分岐と連動させる事によって、より高度なシステムの管理が実現出来るのです。
inserted by FC2 system