好吧,我有一個HTML畫布,上面有一堆圓圈。我想在圓圈上點擊鼠標事件來觸發一些JavaScript功能。我已經有了基礎知識,但座標顯然非常精確,以至於我需要30次才能擊中某個圓的座標。關於等於在JavaScript中的功能?
有沒有辦法實現「約等於」;換句話說,我希望鼠標點擊的x和y觸發一個函數,當它非常接近(比方說10px)canvas上的東西的座標?
感謝
亞歷
好吧,我有一個HTML畫布,上面有一堆圓圈。我想在圓圈上點擊鼠標事件來觸發一些JavaScript功能。我已經有了基礎知識,但座標顯然非常精確,以至於我需要30次才能擊中某個圓的座標。關於等於在JavaScript中的功能?
有沒有辦法實現「約等於」;換句話說,我希望鼠標點擊的x和y觸發一個函數,當它非常接近(比方說10px)canvas上的東西的座標?
感謝
亞歷
的第一個想法:
if ((mouselocx >= (corodinatex - 10)) && (mouselocx <= (corodinatex + 10)) {
if ((mouselocy >= (corodinatey - 10)) && (mouselocy <= (corodinatey + 10)) {
Do something...
}
}
您可以使用這樣的事情來測試,如果有一點是另一點的一定半徑內:
function withinRadius (x1, y1, x2, y2, radius) {
var dX = x1 - x2, dY = y1 - y2;
return ((dX*dX) + (dY*dY) < radius*radius);
}
一般情況下,您想檢查您是否在由展開式創建的多邊形內單擊g在左右方向上向外曲線。在貝塞爾曲線,普通圓錐曲線等情況下計算這個多邊形是非常棘手的。大多數圖形庫允許您設置筆畫寬度參數併爲您執行。在1px曲線下面的背景色中繪製寬曲線,並檢查寬曲面上的點擊。只要確保在任何前景色之前畫出所有背景色。
在你的圈子的特定情況下,如果你沒有這樣一個圖形庫,那麼看看你是否在距離圓心的距離內點擊了就足夠了。如果您的圈子數量非常少,則可以查看整個列表。如果你有超過六分之一(直覺感覺什麼時候切換到更好的算法),將屏幕劃分爲四分之一,並列出一個矩形中某個矩形可能擊中的圓,然後劃分爲矩形內的四分之一併檢查它可能是圓圈,直到你只有六打左右的可能性。然後沿着可能性列表查看是否在任何圈子的三角洲內。
您可以使用矩形邊界框進行碰撞檢測嗎? – zzzzBov 2010-11-08 05:38:05