2010-11-08 73 views
1

好吧,我有一個HTML畫布,上面有一堆圓圈。我想在圓圈上點擊鼠標事件來觸發一些JavaScript功能。我已經有了基礎知識,但座標顯然非常精確,以至於我需要30次才能擊中某個圓的座標。關於等於在JavaScript中的功能?

有沒有辦法實現「約等於」;換句話說,我希望鼠標點擊的x和y觸發一個函數,當它非常接近(比方說10px)canvas上的東西的座標?

感謝

亞歷

+0

您可以使用矩形邊界框進行碰撞檢測嗎? – zzzzBov 2010-11-08 05:38:05

回答

1

的第一個想法:

if ((mouselocx >= (corodinatex - 10)) && (mouselocx <= (corodinatex + 10)) { 
    if ((mouselocy >= (corodinatey - 10)) && (mouselocy <= (corodinatey + 10)) { 
Do something...  
} 
    } 
3

您可以使用這樣的事情來測試,如果有一點是另一點的一定半徑內:

function withinRadius (x1, y1, x2, y2, radius) { 
var dX = x1 - x2, dY = y1 - y2; 
return ((dX*dX) + (dY*dY) < radius*radius); 
} 
0

一般情況下,您想檢查您是否在由展開式創建的多邊形內單擊g在左右方向上向外曲線。在貝塞爾曲線,普通圓錐曲線等情況下計算這個多邊形是非常棘手的。大多數圖形庫允許您設置筆畫寬度參數併爲您執行。在1px曲線下面的背景色中繪製寬曲線,並檢查寬曲面上的點擊。只要確保在任何前景色之前畫出所有背景色。

在你的圈子的特定情況下,如果你沒有這樣一個圖形庫,那麼看看你是否在距離圓心的距離內點擊了就足夠了。如果您的圈子數量非常少,則可以查看整個列表。如果你有超過六分之一(直覺感覺什麼時候切換到更好的算法),將屏幕劃分爲四分之一,並列出一個矩形中某個矩形可能擊中的圓,然後劃分爲矩形內的四分之一併檢查它可能是圓圈,直到你只有六打左右的可能性。然後沿着可能性列表查看是否在任何圈子的三角洲內。