当我不想要时,球一直移动到屏幕左侧

时间:2015-08-09 23:24:22

标签: java

每当我告诉矩形向左移动时,它一直移动到屏幕的左侧,当我只想移动一点时。每当我告诉它向右移动时,它根本不动。我做错了什么?

public class Balls {

    private static final int MOVE_SPEED_X = 2;
    private int x, y, width, height, velX, velY;
    private Rectangle rect;

    public Balls(int x, int y, int height, int width) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
        velX = 0;
    }

    public void update() {
        y += 3;
    }

    public void reset() {
        y = 0;
    }

    public void accelLeft() {
        x = -MOVE_SPEED_X;
    }

    public void accelRight() {
        x = +MOVE_SPEED_X;
    }
}

第二块相关代码

public class PlayState extends State {

    private Paddle paddleRight, paddleLeft;
    private static final int PADDLE_WIDTH = 30;
    private static final int PADDLE_HEIGHT = 60;

    private Ball ball;
    private Balls balls;

    // bDiam stands for ball diameter

    private static int bDiam = 30;

    private int playerScore = 0;
    private Font scoreFont;

    @Override
    public void init() {
        paddleLeft = new Paddle(0, 195, PADDLE_WIDTH, PADDLE_HEIGHT);
        paddleRight = new Paddle(785, 195, PADDLE_WIDTH, PADDLE_HEIGHT);
        scoreFont = new Font("SansSerif", Font.BOLD, 25);
        //ball = new Ball(300, 200, bDiam, bDiam);
        balls = new Balls(500, 0, bDiam, bDiam);
    }

    @Override
    public void onClick(MouseEvent e) {
        // bDiam = bDiam + 20;
    }

    @Override
    public void update() {

        balls.update();

        if (balls.getY() > GameMain.GAME_HEIGHT) {
            balls.reset();
        }

    }

    @Override
    public void onKeyPress (KeyEvent e){

        if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
            balls.accelRight();
        }
        if (e.getKeyCode() == KeyEvent.VK_LEFT) {
            balls.accelLeft();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

在accelLeft中应该是x = x - MOVE_SPEED_X(在accelRight中类似)