没有愚蠢的问题 - 这是我的动机。开始。 我知道这很简单,但我似乎无法完全理解,是什么造成了区别:
double previousLocation = e.getX();
if (e.getX() != previousLocation);
并且,更改变量的位置
double previousLocation = e.getX();
if (previousLocation != e.getX());
e.getX只是在屏幕上设置鼠标的位置。我有一个跟随我的鼠标移动的图形对象。在第一个例子中它起作用,在第二个例子中它不起作用。
答案 0 :(得分:0)
previousLocation != e.getX()
相当于
e.getX() != previousLocation
答案 1 :(得分:0)
这里唯一的区别是第二次调用e.getX()时。如果将它放在if语句的第二部分中,e.getX()将稍后进行评估。在这段时间里,鼠标可能会略微移动,弄乱你的模糊意图。
另一件需要考虑的事情是,大多数语言的双打并不是100%准确,当比较像你这样的双打时,你应该使用epsilon:
double epsilon = 0.0000001;
if(previousLocation>=e.getX()-epsilon && previousLocation<= e.getX()+epsilon)
//evaluate
答案 2 :(得分:0)
通常在确定已更改之后存储先前的位置。
void EventHandler( MouseEvent & e )
{
static double previousLocation = e.getX();
double currentLocation = e.getX();
if( previousLocation != currentLocation ) {
// Take whatever action you need to
//...
previousLocation = currentLocation;
}
}