【发布时间】:2013-12-07 07:18:42
【问题描述】:
这个简单的 if 比较不起作用,我不知道为什么。
代码:
public abstract class Button extends Drawable_object {
...
@Override
public void update()
{
super.update();
mouseOver_last = mouseOver;
double mx = Game_logic.get_mouse_x();
double my = Game_logic.get_mouse_y();
//the not working statement check:
if ((mx <= x + ((double)width / 2))&&
(mx >= x - ((double)width / 2))&&
(my >= y - ((double)height / 2))&&
(my <= y + ((double)height / 2)))
{ mouseOver = true;}
else mouseOver = false;
....
}
虽然 Game_logic.get_mouse_x() 和 y 是静态方法:
public class Game_logic {
...
public static double get_mouse_x() { return mouse_x; }
public static double get_mouse_y() { return mouse_y; }
}
这些是由 Mouse adapaer 在我的主运行类中设置的:
public Board() throws IOException, URISyntaxException {
...
private class MAdapter2 extends MouseAdapter {
@Override
public void mouseMoved(MouseEvent e) {
Game_logic.set_mouse_x(e.getX());
Game_logic.set_mouse_y(e.getY());
}
}
问题是,当我在屏幕上绘制 x - width / 2、mx 和 x + width / 2(与 y 相同)时,将鼠标保持在我想要的位置看起来像是陈述必须是真的,但 mouseOver 仍然是错误的。我该如何解决?
【问题讨论】:
-
为什么不直接使用 MouseListener?
-
您是否尝试过打印您的值以查看结果?另外,oracle.com/technetwork/java/codeconv-138413.html
-
如需尽快获得更好的帮助,请发帖SSCCE。
标签: java comparison mouse collision