0

ばかげた質問はありません。それが私のモットーです。ここに行きます。私はそれが簡単であることを知っていますが、完全には理解できないようです.

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

to 変数の場所の変更

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

e.getX は、画面上のマウスの位置を設定するだけです。マウスの動きに追従するグラフィカルオブジェクトがあります。最初の例では機能しますが、2 番目の例では機能しません。

4

3 に答える 3

0
previousLocation != e.getX()

と同等です

e.getX() != previousLocation
于 2012-09-09T22:59:56.013 に答える
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

ここでの唯一の違いは、2 回目に e.getX() を呼び出すときです。if文の後半に入れるとe.getX()の評価が少し遅れてしまいます。この時点で、マウスの動きが少し大きくなり、あいまいな意図が台無しになっている可能性があります。

考慮すべきもう1つのことは、ほとんどの言語のdoubleは100%正確ではなく、あなたのようにdoubleを比較するときは、イプシロンを使用する必要があるということです:

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