アニメーション


スレッドを使用する

いよいよアニメーションを作ってみましょう
アニメーションが連続する画面の更新であることは知っていると思います
つまり、一定のタイミングでrepaint()すれば良いのです

この一定のタイミングを作り上げるものこそスレッドです
コンソールJavaでやりましたね
アプレットの場合はThreadを継承できないのでRunnableをインプリメントします

アプレットはスレッドのスケジュール下にあることはいいました
私たちが作るスレッドも、あくまでアプレットのスケジュールに従う必要があります
そのため、Thread()コンストラクタにthisを渡します

あとは、スレッドの実装であるrun()メソッドを定義すれば良いだけですね
repaint()をrun()の内部の無限ループで呼び出せば、値を変化させつづけることができます
その値にしたがって、画面に何かを出力しているのなら、それはアニメーションになります
import java.applet.Applet;
import java.awt.*;

/*<applet code="App14.class" width="400" height="200"></applet>*/

public class App14 extends Applet implements Runnable {
	static int Ovalx = 100;
	boolean x = true;

	public void init() {
		setBackground(Color.white);
		setForeground(Color.red);

		Thread th = new Thread(this);
		th.start();
	}

	public void run() {
		try {
			while (true) {
				repaint();
				Thread.sleep(10);

				if (x) Ovalx++;
				else Ovalx--;
				if (Ovalx >= 350) x = false;
				if (Ovalx <= 0) x = true;
			}
		}
		catch (Exception err) {
		}
	}

	public void paint(Graphics g) {
		g.fillOval(Ovalx , 75 , 50 , 50);
	}
}
アプレット

なんだか、とっても感動的ですね
チカチカするのは、update()メソッドが背景色で塗りつぶしたあとにpaint()を呼び出しているからです
この解決策は後記することにします




前のページへ戻る次のページへ