2012-11-03 16 views
-1

可能重複:
MouseListener needs to interact with many object Java的MouseListener來檢測一下已被點擊的Java

我有畫到屏幕上有許多圖像,以及其他事情的程序。我有一個鼠標監聽器,但檢測屏幕上單擊的內容的最有效方法是什麼?因爲如果我有一個圖像100px x 50px @從500, 300開始,

我不能說if (x > 500 && x < 600) etc ..對於屏幕上的每個圖像?

感謝您的幫助,以解決這類問題

+0

而不是重新問一個問題在同一主題,爲什麼不改善你[已存在的問題](http://stackoverflow.com/questions/13212159/mouselistener-needs-to-interact-with-many-object-java)?投票結束這一重複。 –

+0

這是一個不同的問題:) – user1724416

+0

這完全取決於您使用的圖像數量。例如,如果您使用的是10張圖片,我個人只需循環瀏覽並進行比較。 – Clark

回答

1

一種方法有效地是使用QuadTree,這是遞歸細分屏幕的數據結構。這使您只能檢查大致位於屏幕右側的那些圖像。

或者更簡單的方法是簡單地將屏幕細分爲四分之一或十六分之一,並將每個圖像與其覆蓋的屏幕部分「註冊」。如果您有相對於屏幕尺寸的大圖像,這可能效果會更差。

這可能只有在很多圖像是靜態的時候纔會有效,因爲四叉樹需要在圖像移動時重新計算。

您可能會發現,簡單地檢查每一個圖像實際上是速度不夠快 - 你沒有說你有多少圖像有,或者它目前需要多長時間來檢查他們... ...