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

Evo*_*lor 0 java rectangles graphics2d

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

advance()方法每0.0025秒调用一次,这也是值的elapsedTime.

private int speed = 1;

public void advance(float elapsedTime) {
    rectangle.x = (int) (rectangle.x - speed * elapsedTime);
}
Run Code Online (Sandbox Code Playgroud)

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

public void advance(float elapsedTime) {
    rectangle.x = (int) (rectangle.x + speed * elapsedTime);
}
Run Code Online (Sandbox Code Playgroud)

它根本不动.

有任何想法吗?我很难过!

kab*_*abb 5

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

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