簡體   English   中英

關於Javascript中的函數等於?

[英]About equal to function in Javascript?

好吧,我有一個帶有一堆圓圈的HTML畫布。 我想要圓圈上的鼠標點擊事件來觸發一些Javascript功能。 我已經掌握了基礎知識,但坐標顯然是如此精確,以至於我需要30次才能達到某個圓的精確坐標。

有沒有辦法實現“約等於”; 換句話說,我希望鼠標點擊的x和y能夠觸發一個函數,當它非常接近(比如10px)畫布上某些東西的坐標時?

謝謝

亞歷克斯

你可以使用這樣的東西來測試一個點是否在另一個點的某個半徑范圍內:

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

初步想法:

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

一般情況下,您要檢查是否在通過向左和向右擴展曲線創建的多邊形內單擊了。 在貝塞爾曲線,一般圓錐曲線等的情況下計算該多邊形是棘手的。 大多數圖形庫允許您設置筆畫寬度參數並為您完成。 在1px曲線下方繪制背景顏色的寬曲線,並檢查寬曲線上的命中。 只需確保在任何前景顏色之前繪制所有背景顏色。

在圓圈的特定情況下,如果您沒有這樣的圖形庫,只需在距離圓心的距離范圍內點擊即可。 如果您的圈數非常少,則可以瀏覽整個列表。 如果你有超過六打(直覺感覺什么時候切換到更好的算法)將屏幕划分為四分之一,其中一個矩形可能已擊中哪個圓圈的列表,然后分成該矩形內的四分之一並檢查圈子,直到你只有六打左右的可能性。 然后查看可能性列表,檢查您是否在任何圈子的delta內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM