Javascript 如何按时间间隔刷新鼠标上的事件参数?
由于Javascript 如何按时间间隔刷新鼠标上的事件参数?,javascript,canvas,Javascript,Canvas,由于onmousedown的工作方式与按住onkeydown的工作方式不同,因此我不得不妥协并创建自己的风格,到目前为止,我提出了以下建议: can.onmousedown = function(e) { map.moving = setInterval(function() { console.log(e.pageX + ' ' + e.pageY); map.posX = e.pageX; map.posY = e.pageY;
onmousedown
的工作方式与按住onkeydown
的工作方式不同,因此我不得不妥协并创建自己的风格,到目前为止,我提出了以下建议:
can.onmousedown = function(e) {
map.moving = setInterval(function() {
console.log(e.pageX + ' ' + e.pageY);
map.posX = e.pageX;
map.posY = e.pageY;
}, 70);
}
can.onmouseup = function(e) {
clearInterval(map.moving);
}
这很好,我现在唯一的问题是,e
参数只在初次单击时设置,所以鼠标坐标在整个间隔内保持不变,知道如何解决这个问题吗?试试这个:
can.onmousedown = function(e) {
map.moving = setInterval(function() {
e = e || window.event;
console.log(e.pageX + ' ' + e.pageY);
map.posX = e.pageX;
map.posY = e.pageY;
}, 70);
}
can.onmouseup = function(e) {
clearInterval(map.moving);
}
您还需要调用
mousemove
can.onmousemove = function(e) {
if( map.moving ) {
console.log(e.pageX + ' ' + e.pageY);
map.posX = e.pageX;
map.posY = e.pageY;
}
};
can.onmousedown = function(e) {
map.moving = true;
};
can.onmouseup = function(e) {
map.moving = false;
};
或者,您可能希望解耦并降低
mousemove
处理程序的执行速度,因为这会发生(就像滚动事件一样,非常快)。例如,也可以调用超时
。从鼠标向下
开始,用鼠标移动
拖动,用鼠标停止
这只是jAndys回答的一个例子: