矩形坐标不更新

时间:2015-06-02 14:32:42

标签: java swing java-2d rectangles

我正在努力让基本的交叉点与我正在开发的游戏一起工作,因此我需要定义他们的命中箱。但是,当使用g2d.draw(矩形)时,矩形相对于其更新的坐标不会移动。

int x = 100 ;
int y = 100 ;
int x2 = x + 100;
int y2 = y + 100;

Rectangle hitbox = new Rectangle(x,y,x2,y2) ;

protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    //Graphical loop start
    g2d.draw(hitbox) ;
    repaint() ;
    //Graphical loop end
    }

带有keylistener组件的游戏循环

public void run() {

    while(running) {

        //Player movement
        if (left) {
            if (x <= -225) {
                x = 1440 ;
            }
            x = x - 2 ;
        }
        if (up) {
            if(y <= -225) {
                y = 900 ;
            }
            y = y - 2 ;
        }
        if (right) {
            if (x >= 1416) {
                x = -24 ;
            }
            x = x + 2;
        }
        if (down) {
            if (y >= 900) {
                y = -10 ;
            }
            y = y + 2 ;
        }
        //Player movement

        //ball movement
        if (cubey > y) {
            cubey-- ;
        }
        if(cubey < y) {
            cubey++ ;
        }
        if (cubex > x) {
            cubex-- ;
        }
        if (cubex < x) {
            cubex++ ;
        }

1 个答案:

答案 0 :(得分:1)

根据提供的代码,hitbox矩形与坐标更改之间没有任何关联。使用新的x,y更新矩形,然后重新绘制。

这样的事情:

public void run() {
    while(running) {
       //...
       hitbox.setBounds(x,y,100,100);
    }
}

即使你的程序流程如何运作也没有效率。