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回答的一个例子: