Next: 4.1 アニメーション
Up: ソフトウェア第三 講義資料 配列,スレッド応用,アニメーション,シミュレーション
Previous: 3 スレッドの中断と再開
アニメーションは,絵を描く処理を繰り返し実行する
ことによって可能となる.
車の表示を動かすプログラムは以下のようになる.
// AnimationCar.java
//<APPLET code="AnimationCar.class"
// width=220 height=120>
//</APPLET>
import java.awt.*;
import java.applet.*;
public class AnimationCar extends Applet
implements Runnable
{
private Thread trig = null;
private int x;
public void start() {
if (trig == null) {
trig = new Thread(this); trig.start();
}
}
public void init() {x = 200; }
public void run() {
while (trig != null) {
repaint();
try { Thread.sleep(125); }
catch (Exception e) {
showStatus("Error: " + e);
}
x -= 5;
if (x == 0) x = 200;
}
}
public void paint(Graphics g)
{
g.drawRect(x+50,40,150,30);
g.fillOval(x+80,70,20,20);
g.fillOval(x+150,70,20,20);
g.drawLine(x+80,40,x+120,10);
g.drawLine(x+120,10,x+170,10);
g.drawLine(x+170,10,x+190,40);
g.drawString("Hello",x+120,60);
}
}
ここでの例では,Appletクラスを継承したユーザクラスに
さらに,Runnableインタフェースを実装させることでアニメーションを実現して
いる.
アプレットは,init,start, paintのメソッドを順に呼び出す.
Runnableインタフェースをもつ場合,startのメソッドの中で
threadを生成し,そのthreadを起動すれば,そのthreadの中の
runメソッドが並行処理される.runの中では,
repaintメソッドが呼び出されるようにする.
repaintメソッドは,
画面をクリアーし,paintメソッドを
呼ぶupdateメソッドを呼び出している.
updateメソッドを定義しておかなければ
ユーザは,paintメソッド
に表示したい手続きを書いておけば,
画面をpaintごとに消した後
表示を行う.
generated through LaTeX2HTML. M.Inaba 平成18年5月7日