我有一個畫布元素,當我點擊它時,我用e.clientX(Y)或e.screenX(Y)獲得點擊位置。奇怪的事情正在發生。 Y值總是太高。請看這張圖片:http://img840.imageshack.us/img840/268/eventq.jpg。任何理想爲什麼這麼高?點擊事件的位置(Y)太高
0
A
回答
0
我很確定你可以告訴發生了什麼事。您沒有相對於您的畫布的座標,但相對於您的視口。它也取決於你的瀏覽器是否包含填充。
將它們轉換爲正常座標。在你的情況下,這涉及減去畫布的偏移量。
1
你只需要採取ClientX和Y並從他們減去畫布的位置。
這個例子是不必要的冗長,只是爲了顯示步驟:
var canvas = document.getElementById('game');
var canvasX, canvasY;
canvas.addEventListener('click', function(event) {
canvasX = canvas.offsetLeft;
canvasY = canvas.offsetTop;
var eventX = event.clientX;
var eventY = event.clientY;
var relX = eventX - canvasX;
var relY = eventY - canvasY;
alert('X = ' + relX + ', Y = ' + relY);
});
相關問題
- 1. 點擊事件當前位置查詢
- 2. 如何自動點擊/點擊x,y位置?
- 3. NotifyIcon ContextMenu和太多點擊事件
- 4. 在高圖軸上的點擊事件
- 5. 如何使用jQuery設置按鈕點擊事件的位置?
- 6. 爲定位點添加點擊事件
- 7. 事件點擊高山餡餅
- 8. 在JQuery中使用鼠標位置設置點擊事件
- 9. jQuery的編程點擊特定的X Y位置DIV
- 10. 如何在頁面上的任意位置點擊鼠標X和Y位置?
- 11. Div點擊+拖動速度太高?
- 12. angularJS - 從div中的鼠標點擊獲取x&y位置
- 13. 在ImageView中獲取點擊的X/Y位置
- 14. 點擊事件沒有提高點擊跨項添加動態
- 15. 通過「位置」執行RecyclerView項目上的點擊事件
- 16. 實施點擊事件與更新的偏移位置
- 17. 獲取鼠標點擊事件的位置從一個JButton
- 18. 如何找出點擊事件被捕獲的位置?
- 19. 我的位置按鈕事件點擊鈦地圖v3
- 20. 如何檢測div中發生點擊事件的位置?
- 21. 根據點擊位置放棄NSWindow上的鼠標事件
- 22. Android的listview位置和點擊事件處理問題
- 23. 在點擊事件後獲取子元素的位置
- 24. 如何鎖定日曆事件位置的點擊
- 25. 如何在指定位置觸發Ember.View上的點擊事件
- 26. 是否有與'touchstart'事件相同的e.PageX位置,因爲有點擊事件?
- 27. 在點擊位置
- 28. 點擊事件
- 29. 事件點擊
- 30. 更改位置點擊點
是canvas元素在頁面上的第一/頂部元素?屏幕截圖不會讓我們看到頁面的頂部。 ClientY不是相對於當前元素,而是頁面(視口)本身。 – Fosco 2010-12-02 14:24:40
不,有一些文字...有沒有辦法讓它相對於畫布元素? – thomas 2010-12-02 14:29:24