我有一个画布元素,当我点击它时,我用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. 为定位点添加点击事件
- 3. jQuery的编程点击特定的X Y位置DIV
- 4. 如何在页面上的任意位置点击鼠标X和Y位置?
- 5. 在ImageView中获取点击的X/Y位置
- 6. 如何获得x,y位置的鼠标点击框架?
- 7. 点击事件没有提高点击跨项添加动态
- 8. 我的位置按钮事件点击钛地图v3
- 9. 如何在指定位置触发Ember.View上的点击事件
- 10. 通过“位置”执行RecyclerView项目上的点击事件
- 11. 实施点击事件与更新的偏移位置
- 12. 在点击事件后获取子元素的位置
- 13. 如何锁定日历事件位置的点击
- 14. 是否有与'touchstart'事件相同的e.PageX位置,因为有点击事件?
- 15. 事件点击
- 16. 更改位置点击点
- 17. 旋转UIImageView,仍然得到X/Y点击位置
- 18. 如何找到鼠标按钮'点击'位置x和y?
- 19. 如何在ModestMaps/Wax中获取位置点击事件
- 20. 位置jquery对话框正好在点击事件下方
- 21. 控件点击事件点击框
- 22. 添加内嵌点击事件后发生的点击事件?
- 23. HighStock HighCharts点击事件设置标记
- 24. ButtonField点击事件
- 25. jquery - 点击事件
- 26. KineticJS - 点击事件
- 27. Summernote点击事件?
- 28. Flash点击事件
- 29. zIndex点击事件
- 30. jquery点击事件 -
是canvas元素在页面上的第一/顶部元素?屏幕截图不会让我们看到页面的顶部。 ClientY不是相对于当前元素,而是页面(视口)本身。 – Fosco 2010-12-02 14:24:40
不,有一些文字...有没有办法让它相对于画布元素? – thomas 2010-12-02 14:29:24