我一直在玩弄HTML5中的canvas元素,并且试图获取canvas的相对位置。画布相对位置
我使用了layerX和layerY,它似乎是最明显的解决方案,但由于某种原因,也许这只是它的工作原理,layerX/Y看到的点位于指针的左上角。我的代码如下
function ev_canvas (ev) {
if (ev.layerX || ev.layerX == 0) { // Firefox
ev._x = ev.layerX;
ev._y = ev.layerY;
} else if (ev.offsetX || ev.offsetX == 0) { // Opera
ev._x = ev.offsetX;
ev._y = ev.offsetY;
}
它只是增加的_x/Y元素向EV对象,所以我可以在一个描画表面使用它们。
这里是一个关于正在发生的事情的视频。
http://img.zobgib.com/2011-03-21_1413.swf
如果你想在http://research.zobgib.com/beta
与它自己,你可以打我是否只需要设置手动偏移,或者是layerX/Y错了吗?
编辑:
我可以添加手动偏移,但看来这是错误的方式去把X/Y位置在数比例到位
的偏移代码只是
...
ev._x = ev.layerX-10;
ev._y = ev.layerY-13;
...
编辑2:
在歌剧光标是一个指针和位置是通过默认正确。
在Chrome和safari中单击时(默认情况下,不返回false),光标变为文本选择器,位置位于文本选择器的底部。
在Firefox中,光标是一个指针,但位置在手的中心。
其中
return false;
- Safari浏览器上鼠标按下/移动光标仍然是一个指针,但位置是关闭
- 火狐保持相同,而不返回假
- 奥普拉仍然赢得
- Chrome光标保持“鼠标光标”,位置关闭。
随着偏移
- Safari是接近正确(略高于)
- 火狐略高于
- 奥普拉WIN
- 铬正确
Ť这里必须有更好的方式
PS我不能测试IE浏览器等等,任何结果将是很好
这是啊...我不喜欢但它的作品可能有一个更好的方式来获取相对于画布的鼠标位置,所以位置不一定是绝对的。 – austinbv 2011-03-21 18:50:26
@zobgib - 是的,有。请参阅此解决方案的以前答案:http://stackoverflow.com/questions/5085689/tracking-mouse-position-in-canvas/5086147#5086147 – 2011-03-21 18:55:43