2016-03-16 54 views
0

我已經發現一對夫婦小提琴,用戶可以拖動面料的對象,他們捕捉到任何一個網格或其他對象,但是,我無法找到任何例子,其中用戶的鼠標光標捕捉到網格或現有對象的邊界。捕捉鼠標光標移動到電網和/或物體

是否有可能,如果是,則它做了什麼?

回答

0

抱歉地說,沒有設置從JavaScript光標位置沒有直接的方法。

對於您的情況(只要網格間距不大),您可以設置element.style.cursor = "url('pointer.png') 9 26, pointer"並更改最後兩個數字(熱點)以相對於它自己移動鼠標。當熱點保持不變時,鼠標會出現對齊座標,但熱點會移動。

var grid = 16; 
// assume mouseX, mouseY are mouse coords. 
var offsetX = mouseX % grid; 
var offsetY = mouseY % grid; 
// element is the element you are listening to mouse events from 
// pointer.png is an image of the cursor 
element.style.cursor = "url('pointer.png') "+ offsetX + " " + offsetY + ", pointer" 

備選地

保持熱點並使用一個小屏幕外畫布以繪製光標由正確的偏移量。然後使用canvas.toDataURL創建光標樣式URL。

  • 注意A.這兩種方法都不移動鼠標位置,只是可視化。鼠標仍會報告其真實位置。您將不得不調整鼠標事件偵聽器來補償偏移量。
  • 注意B.即使鼠標沒有進入或離開元素,鼠標也會觸發鼠標懸停和鼠標懸停事件。你需要有一個解決方案來處理這個問題(即通過身體而不是元素來聽聽鼠標)。
  • 注C.要停止更新之間的光標滑動,請通過requestAnimationFrame更改光標,而不是鼠標事件。
+0

謝謝你的答覆。當我問這個問題時,我試圖推廣以便其他人可以使用這些信息,但是,看起來這些方法不適合我的情況。更多細節:想像一張有不同角度線條的照片。我需要能夠使用fabric.js繪製線條(請參閱此示例:http://jsfiddle.net/fabricjs/URWru/)並捕捉圖片上的線條。我的想法是處理圖像並獲取黑色像素的座標,然後將這些座標放在fabricjs畫布上,並將鼠標光標捕捉到這些座標。 – Roy

+0

你的「小屏幕畫布」給了我一個主意。請確認這是否是你的意思。如果我們有一個跟隨光標的形狀,就像在這個(https://jsfiddle.net/ut4c25k6/)中點擊對象時 - 當對象接近某個特定的座標時,那麼該對象將跳轉到遠離鼠標進行協調。如果用戶在該對象不在時點擊,則第二個線點將從對象而不是從鼠標變成紅色。是否有意義?! :)雖然我不知道這項技術是否允許這樣的事情。 – Roy