java移动一个形状对象

时间:2011-11-14 05:33:48

标签: java

我有一个程序可以创建使用多线程移动到随机位置的圆,每个线程将处理每个圆周运动。我知道如何移动图像而不是形状对象。

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);
            }
        }
    //}
}

2 个答案:

答案 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)

尝试清除屏幕,然后再次进行绘画。使用双缓冲来防止闪烁。