向左移动太快,根本不向右移动

时间:2014-02-27 01:55:53

标签: java graphics2d rectangles

这个让我难过。我不知道究竟是什么导致了这个问题,但我会尽量提供尽可能多的相关信息。如果您有任何问题,请询问。

{0.00}秒约会调用advance()方法,这也是elapsedTime的值。

private int speed = 1;

public void advance(float elapsedTime) {
    rectangle.x = (int) (rectangle.x - speed * elapsedTime);
}

即使我将速度设置为0.0000001,x坐标也会向左移动太快。但是,每当我试图将它移到右边时:

public void advance(float elapsedTime) {
    rectangle.x = (int) (rectangle.x + speed * elapsedTime);
}

根本不动。

有什么想法吗?我很难过!

1 个答案:

答案 0 :(得分:5)

这是因为矩形坐标存储为整数,因此它们一次只能更改1。由于绘图经常运行,当向左移动时,它仍然移动得非常快,因为它不能同时以小于1像素的速度移动。

它根本不向右移动的原因是因为四舍五入。当转换为int时,double会向下舍入。因此,如果您的位置为5,并且您尝试添加0.00001,然后将其转换为int,则您的位置最终仍为5.如果您要减去0.000001,那么它将向下舍入为4,这就是移动的原因在左边工作。