1

マウスの後ろに「しっぽ」を使用している Java でゲームを作成しています。MouseMotionListener を使用し、mouseDragged(MouseEvent e) 関数を使用してマウスの位置を配列に追加します。

したがって、mouseDragged(MouseEvent e) 関数が起動されている限り、現在のマウス位置が配列に追加され、ドラッグが停止すると、配列がクリアされます。

私の考えは、mouseMoved(MouseEvent e) 関数を使用して配列を null に設定することでした。私はこれを次のように行うことができます:

public void mouseMoved(MouseEvent e) {
    if(myTailArray != null) {
        myTailArray = null;
    }
}

または、次のようにします。

public void mouseMoved(MouseEvent e) {
    myTailArray = null;
}

最後のメソッドは、myTailArray が何回も null に設定されることを意味します。しかし、それはパフォーマンスに関して違いを生むでしょうか?

編集:明確にするために、ドラッグ後にマウスを動かさないと、これがバグを引き起こす可能性があることを知っています。MouseListener を使用して、マウスを押して離したときにリセットしますが、ちょっと興味がありました。

EDIT2:すべてのコメントをありがとう!イベントが「かなり頻繁に」発生するため、コードで悪臭がする可能性があると思いました。キャッシングなどは考えていませんが。

4

5 に答える 5

0

なんらかの影響があったとしても、とにかく気付かないでしょう。

ただし、比較は割り当てよりもコストがかかるため、if ステートメントのないバージョンは「高速」である必要があります。(私はそれを証明するための参照を見つけることができませんが、ユニからそれを覚えています)

于 2013-11-04T18:54:14.717 に答える