• ベストアンサー

JAVAアップレットでの処理待ち時間設定方法

現在JAVAアップレットを勉強中で、 画像を特定の位置から特定の位置へ移動するプログラムを作ったのですが 一瞬で移動してしまいます。 repaint関数を使っても移動中の画像は表示されません。 そこで、移動処理に処理待ち時間を設定したいのですが 何か良い方法はありませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

> repaint関数の所でウェイトを入れたいのです。 ということでしたら、こんな風になるかと思います。 public void reprint_x_OV(int y) {  while(Xpos[4][y] > -300) {   Xpos[0][y] = Xpos[0][y] - 5;   Xpos[1][y] = Xpos[1][y] - 5;   Xpos[2][y] = Xpos[2][y] - 5;   Xpos[3][y] = Xpos[3][y] - 5;   Xpos[4][y] = Xpos[4][y] - 5;   repaint();   try {    Thread.sleep(200);   } catch (InterruptedException e) {   }  } } これで、repaint した後に 0.2 秒停止します。 sleep の引数は、停止する時間を千分の一秒単位で指定します。ここでは適当に200としてみました。 repaint の前に停止させるには、repaint と try~catch{} を入れ替えてください。

noname#118114
質問者

お礼

一時停止はこれで出来ましたけど どうやらwhileによる繰り返しでは移動アニメーションはできないようです。 そのため大幅なプログラム修正が必要のようです。 ありがとうございました。

その他の回答 (1)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

実際のプログラムがどうなっているのかわからないので、細かいことはいえないのですが、一般に、スレッドの進行を一時中断するといえば Thread クラスの sleep メソッドが思い浮かびます。

noname#118114
質問者

補足

移動処理プログラムは以下のようになっています。 これは特定条件を満たすと呼び出されるもので、普段は行われません。 public void reprint_x_OV(int y) { while(Xpos[4][y] > -300) { Xpos[0][y] = Xpos[0][y] - 5; Xpos[1][y] = Xpos[1][y] - 5; Xpos[2][y] = Xpos[2][y] - 5; Xpos[3][y] = Xpos[3][y] - 5; Xpos[4][y] = Xpos[4][y] - 5; repaint(); } } これは横に並んでいる五つの画像を 同じ方向に移動して画面外に消したい処理です。 これで画面外に移動することは出来ているのですが、 移動アニメーションが出来ていないのです。 縦もあるのですが処理方法は同じなので省略します。 repaint関数の所でウェイトを入れたいのです。 申し訳ありません。 勉強始めたばかりなので、 参考書等を読んでもスレッドの使い方が良く理解できないものなので お願いします。

関連するQ&A