Javascript 在HTML5画布上移动时跟踪鼠标坐标的简单方法
在HTML5画布上移动鼠标时,有没有一种简单的方法来获取相对鼠标坐标 我发现:Javascript 在HTML5画布上移动时跟踪鼠标坐标的简单方法,javascript,html,html5-canvas,Javascript,Html,Html5 Canvas,在HTML5画布上移动鼠标时,有没有一种简单的方法来获取相对鼠标坐标 我发现: function getMousePos(canvas, evt){ // get canvas position var obj = canvas; var top = 0; var left = 0; while (obj && obj.tagName != 'BODY') { top += obj.offsetTop; le
function getMousePos(canvas, evt){
// get canvas position
var obj = canvas;
var top = 0;
var left = 0;
while (obj && obj.tagName != 'BODY') {
top += obj.offsetTop;
left += obj.offsetLeft;
obj = obj.offsetParent;
}
// return relative mouse position
var mouseX = evt.clientX - left + window.pageXOffset;
var mouseY = evt.clientY - top + window.pageYOffset;
return {
x: mouseX,
y: mouseY
};
}
但对我来说似乎太重了。在使用canvas时使用框架(如Kinetic)来简化这些事情有什么原因吗?您可以完全定位canvas,然后删除while循环 最后,若画布不移动,您可以缓存它的偏移量,然后使用缓存的值
并覆盖所有情况:如果画布将有<代码>固定< /代码>位置,则不必考虑滚动:<代码> PaXExpOffs<代码>,<代码> PaGyOffice < /代码> .< /P> < p>绝对可以定位画布,然后循环删除。
最后,若画布不移动,您可以缓存它的偏移量,然后使用缓存的值并覆盖所有情况:如果画布将有<代码>固定< /代码>位置,则不必考虑滚动:<代码> PaXExpOffs<代码>,<代码> PaGyOffice >
< P>如果您在画布上没有使用<代码> MuMeMoo<代码>,请使用此:$(function () {
canvas = document.getElementById('canvas');
canvas.onmousemove = mousePos;
});
function mousePos(e) {
if (e.offsetX) {
mouseX = e.offsetX;
mouseY = e.offsetY;
}
else if (e.layerX) {
mouseX = e.layerX;
mouseY = e.layerY;
}
}
如果您没有在画布上使用
mousemove
,请使用以下命令:
$(function () {
canvas = document.getElementById('canvas');
canvas.onmousemove = mousePos;
});
function mousePos(e) {
if (e.offsetX) {
mouseX = e.offsetX;
mouseY = e.offsetY;
}
else if (e.layerX) {
mouseX = e.layerX;
mouseY = e.layerY;
}
}
你发布的代码有什么特别之处?Kinetic.js有鼠标移动跟踪功能。也许您可以使用已经实现的库?在我看来,这段代码非常繁重。想象一下,如果为了检索诸如鼠标坐标或键代码之类的参数,您必须进行这样的操作!与高级语言相比,它就像汇编语言。你发布的代码有什么重呢?Kinetic.js有鼠标移动跟踪功能。也许您可以使用已经实现的库?在我看来,这段代码非常繁重。想象一下,如果为了检索诸如鼠标坐标或键代码之类的参数,您必须进行这样的操作!与高级语言相比,它就像汇编语言。