0

没有愚蠢的问题 - 那是我的摩托车。开始。我知道这很简单,但我似乎无法完全理解,有什么区别:

double previousLocation = e.getX();
    if (e.getX() != previousLocation);

并且,更改 to 变量的位置

 double previousLocation = e.getX();
    if (previousLocation != e.getX());

e.getX 只是设置鼠标在屏幕上的位置。我有一个图形对象,它跟随我的鼠标移动。在第一个示例中它有效,在第二个示例中它不起作用。

4

3 回答 3

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;
    } 
}
于 2012-09-09T23:20:51.760 回答
0
previousLocation != e.getX()

相当于

e.getX() != previousLocation
于 2012-09-09T22:59:56.013 回答
0

这里唯一的区别是当你第二次调用 e.getX() 时。如果你把它放在 if 语句的第二部分, e.getX() 将在稍后进行评估。在这段时间里,鼠标可能移动得更多,打乱了你模糊的意图。

另一件要考虑的事情是,大多数语言中的双打并不是 100% 准确的,当像你一样比较双打时,你应该使用一个 epsilon:

double epsilon = 0.0000001;
if(previousLocation>=e.getX()-epsilon && previousLocation<= e.getX()+epsilon)
   //evaluate
于 2012-09-09T23:04:52.513 回答