-1

重複の可能性:
MouseListenerは多くのオブジェクトJavaと対話する必要があります

画面にたくさんの画像を描いたプログラムなどがあります。マウスリスナーを持っていますが、画面上でクリックされたものを検出する最も効率的な方法は何ですか?なぜなら、私が100px x 50px@点から始まる画像を持っている場合500, 300

if (x > 500 && x < 600)画面上のすべての画像について、などとは言えませんか?

助けてくれてありがとう

4

1 に答える 1

1

この種の問題に効率的に取り組む 1 つの方法は、画面を再帰的に再分割するデータ構造であるQuadTreeを使用することです。これにより、画面のほぼ右側にある画像のみを確認できます。

または、より単純なアプローチは、単純に画面を 4 分の 1 または 16 分の 1 に分割し、各画像を画面の一部に「登録」することです。画面サイズに比べて大きな画像がある場合、これはあまり効果的ではない可能性があります。

これはおそらく、画像の移動時に四分木を再計算する必要があるため、画像の多くが静的な場合にのみ有効です。

画像を 1 つずつチェックするだけでも、実際には十分に高速であることがわかるかもしれません。画像の数や、すべての画像をチェックするのに現在どれくらいの時間がかかっているかはわかりませんでした...

于 2012-11-03T20:41:54.143 に答える