事件处理程序之间的全局变量
问题描述:
我的画布内有一张地图。 我想用鼠标拖动这张地图。 我将全局变量dragMap设置为false, 在鼠标关闭时将其设置为true,然后在设置为false时将其设置为false。 对于拖动我检查这个全局变量值处理器为mousemove事件和 如果它是真的,我重绘与偏移地图。事件处理程序之间的全局变量
上面写的是我想让我的代码做但它不起作用。在mousemove处理程序中,dragMap varialbe始终为false。当我点击和drad这个地图我的控制台日志显示:
true 14 false
第一个“真正的”鼠标按下从处理occures的“falses” - 从mosemove事件。 我在做什么错?
$(document).ready(function(){
var dragMap = false;
var startDragMapX;
var startDragMapY;
$("#myCanvas").mousedown(function(e){
dragMap = true;
startDragMapX = e.pageX;
startDragMapY = e.pageY;
console.log(dragMap);
//var x = e.pageX - this.offsetLeft;
//var y = e.pageY - this.offsetTop;
});
$("#myCanvas").mousemove(function(e){
console.log(dragMap);
if(dragMap) {
console.log(2);
oX = e.pageX-startDragMapX;
oY = e.pageY-startDragMapY;
draw(ctx,1,1,oX,oY);
}
});
$("#myCanvas").mousedown(function(){
dragMap = false;
});
});
答
你的绑定鼠标按下两次,
变化
$("#myCanvas").mousedown(function(){
dragMap = false;
});
到
$("#myCanvas").mouseup(function(){
dragMap = false;
});
所以dragmap是假的时mousebutton被释放
答
$("#myCanvas").mousedown(function(){
dragMap = false;
});
在程序结束必须be mouseup
$("#myCanvas").mouseup(function(){
dragMap = false;
});