如何用间隔刷新鼠标按下的事件参数?

时间:2013-04-30 14:51:53

标签: 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;
    }, 70);
}

can.onmouseup = function(e) {
    clearInterval(map.moving);
}

哪个效果很好,我现在唯一的问题是,e参数只是在初始点击时设置,所以鼠标坐标在整个间隔内保持不变,任何想法我都能解决此?

2 个答案:

答案 0 :(得分:1)

您还需要调用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处理程序的执行速度,因为这会发生(如scroll events,非常快)。例如,也可以调用timeouts来完成。

答案 1 :(得分:0)

试试这个:

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);
}