我有一个程序可以创建使用多线程移动到随机位置的圆,每个线程将处理每个圆周运动。我知道如何移动图像而不是形状对象。
g2d.draw(s.circle);
此行仅使用spawn x y绘制圆圈。
我试过添加 s.circle.getBounds()。setLocation(s.x,s.y); 之前 g2d.draw(s.circle); 但没效果
public void paint(Graphics g) {
if (draw == true) {
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
for (Star s : this.items) {
//g2d.drawImage(s.starImage, s.x, s.y, this);
g2d.draw(s.circle);
}
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
}
public void run() {
//if (!items.isEmpty()) {
while(true){
try {
for (Star s : this.items) {
s.move();
}
repaint();
Thread.sleep(50);
} catch (InterruptedException ex) {
Logger.getLogger(Board.class.getName()).log(Level.SEVERE, null, ex);
}
}
//}
}
答案 0 :(得分:0)
你必须
1) draw the circle 2) wait for some short interval (eg, 100ms) 3) REDRAW the same circle - This time with the background colour, so that it has the effect of erasing the shape. 4) draw the circle at the new location. 5) repeat.
当我在做Java / 2D时,上面的内容对我来说很有用 - 抱歉没有发布实际的代码,就像很久以前一样 - 但我相信你会弄明白的。)
答案 1 :(得分:0)
尝试清除屏幕,然后再次进行绘画。使用双缓冲来防止闪烁。