レッスン3は環境によっては画面がちらつくかもしれません。 今度はどうでしょうか。 ダブルバッファリングという手法を使ってみました。
import java.awt.*;
import java.applet.Applet;
public class Lesson4 extends Applet implements Runnable {
int x, y, dx = 10, dy = 10, w, h;
Thread ball;
Image buf;
Graphics gr;
public void init() {
w = getWidth();
h = getHeight();
x = w / 2;
y = h / 2;
buf = createImage(w, h);
gr = buf.getGraphics();
}
public void start() {
if (ball == null) {
ball = new Thread(this);
ball.start();
}
}
public void stop() {
ball = null;
}
public void update(Graphics g) {
g.drawImage(buf, 0, 0, this);
}
public void run() {
Thread thisThread = Thread.currentThread();
while (ball == thisThread) {
try {
thisThread.sleep(100); // sleep 100msec
} catch (InterruptedException e) {
}
if (x <= 10 || x >= w - 10) dx = -dx;
if (y <= 10 || y >= h - 10) dy = -dy;
x += dx; y += dy;
gr.setColor(Color.white);
gr.fillRect(0, 0, w, h);
gr.setColor(Color.blue);
gr.fillOval(x - 10, y - 10, 20, 20);
repaint();
}
}
}
Last modified: 2005-12-29 10:59:02