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

标签 java graphics2d rectangles

这个把我难住了。我不知道到底是什么导致了这个问题,但我会尽力提供尽可能多的相关信息。有问题请追问。

advance() 方法大约每 0.0025 秒调用一次,这也是 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。由于绘制运行如此频繁,当向左移动时,它仍然移动得非常快,因为它不能一次移动小于 1 个像素。

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

关于java - 向左移动太快,根本不向右移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057529/

相关文章:

java - 如何在 java.awt.geom 中获得模糊的笔画

java 对象相等不起作用

java - 具有特定颜色的 JPanel 绘图

java - 无法将 JScrollPane 添加到 GroupLayout 中的 JTextArea

java - 如何在游戏循环中使用 repaint() 方法

java - 如何让 Graphics.drawString 从边界底部绘制?

android - 检查矩形是否相交或位于另一个矩形的一侧 (Android)

javascript - 传单 map 上其他矩形中矩形的百分比

java - 有没有办法在 jtextfield 中放置一个冒号,这样它就不能被删除?

java - Highchart 使用 Java 离屏生成 SVG