2012-07-06 60 views
2

是否有一種簡單的方法可以在kineticjs中執行多個重疊形狀的鼠標檢測(如果在SVG中這更容易實現,則爲rapheljs)。即如果我有兩個圓部分地重疊,我想以某種方式檢測到四種情況:當在沒有形狀 2)Kineticjs重疊形狀鼠標超過檢測

1)當在圓A 3)當在圓圈B 4)當在兩個(在重疊)圈A和B

但我需要一個可以擴展到「n」圈/形狀的通用實現。

乾杯

+0

我想知道這一點。 – KristianB 2012-07-19 07:39:32

回答

2

爲了解決這個問題,你顯然正在處理碰撞檢測。碰撞檢測算法根據您要檢測的形狀而有所不同。

所以要開始,您可以使用lineTo,arc等方法,並使用內置的isPointInPath來進行檢測,傳入鼠標協調。這是最簡單的方法,尤其是奇形多邊形

if (ctx.isPointInPath(20,50)) 
    { 
     // code 
    } 
+1

isPointInPath實際上在實踐中並不是非常有用,因爲它只查看以前繪製的路徑。如果您的應用程序使用了數千個形狀,則必須在繪製每個形狀後立即使用isPointInPath,這意味着您必須將它們繪製到可見畫布或緩衝區畫布上,每次檢測請求都會有數千次,這造成了巨大的開銷。 KineticJS getIntersections()方法實際上執行速度快數百倍(測量此方法),因爲它使用顏色映射散列算法來確定碰撞檢測 – 2012-11-05 20:44:07