2013-04-30 49 views
0

由于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参数仅在初始点击时设置,因此鼠标坐标在整个间隔内保持不变,任何想法如何解决这个问题?

+1

以'mousedown'开始,用'mousemove'拖动,用'mouseup'停止 – Andreas 2013-04-30 14:57:04

+0

只是jAndys的一个例子:[fiddle](http://jsfiddle.net/h4uaa/) – Andreas 2013-04-30 15:21:50

回答

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