Ex13_1
/*--------------------------------
Ex13_1.java
スレッド処理によるアニメーション1
---------------------------------*/
import java.applet.*;
import java.awt.*;
import java.util.Random;
public class Ex13_1 extends Applet implements Runnable {
int x, y, wid, hei; // 楕円の位置座標(x,y),幅wid,高さhei 用変数宣言
int rr, gg, bb; // 色設定(rr,gg,bb)用の変数宣言
Color col; // 色クラス宣言
Random rnd; // 乱数クラス宣言
Thread thd = null; // スレッド宣言
public void init() { // 初期設定
this.setSize(300, 300); // アプレットの画面サイズ指定
x = 10; y = 10; // 初期位置(x,y)
wid = 50; hei = 50; // 初期幅wid,高さhei
rr = 255; gg = 0; bb = 0; // 初期色(rr,gg,bb)
col = new Color(rr,gg,bb);
rnd = new Random();
thd = new Thread(this); // 新しいスレッドを作る
thd.start(); // スレッド開始
}
public void paint(Graphics g) {
g.setColor(col); // 色セット
g.fillOval(x, y, wid, hei); // 楕円描画
}
public void run() { // スレッド開始時に呼び出されるメソッド
while (true) { // 無限ループ
x = rnd.nextInt(200); // x座標:0,1,2,...,199の乱数
y = rnd.nextInt(200); // y座標:0,1,2,...,199の乱数
wid = rnd.nextInt(50)+50; // 幅:50 + 0,1,...,49の乱数
hei = rnd.nextInt(50)+50; // 高さ:50 + 0,1,...,49の乱数
rr = rnd.nextInt(256); // 赤色光:0,1,...,255の乱数
gg = rnd.nextInt(256); // 緑色光:0,1,...,255の乱数
bb = rnd.nextInt(256); // 青色光:0,1,...,255の乱数
col = new Color(rr,gg,bb);
repaint(); // 再描画:paint()メソッドを呼び出し
try {
thd.sleep(250); // スレッド一時停止:500ミリ秒
} catch(InterruptedException e) {
}
}
}
}