我的画布里面有一张地图。 我想用鼠标指针拖动这个地图。 我在开始时将全局变量dragMap设置为false 当鼠标关闭时将其设置为true,然后在鼠标向上时将其设置为false。 对于拖动,我在处理程序中检查mousemove事件和的全局变量值 如果它是真的,我用偏移重绘地图。
上面写的是我希望我的代码可以做的但它不起作用。在mousemove处理程序内部,dragMap varialbe始终为false。当我点击并显示此地图时,我的控制台日志显示:
true 14 false
第一个" true"从mousedown处理程序," 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;
});
});
答案 0 :(得分:2)
您在第三个处理程序中使用了mousedown而不是mouseup
$("#myCanvas").mouseup(function(){
dragMap = false;
});
因此,当mousedown首先发生时,标志设置为true,然后第二个mousedown
处理程序运行将其设置为false,因此在mousemove
处理程序中,您将拥有dragMap == false
。
答案 1 :(得分:0)
你的绑定mousedown两次,
变化
$("#myCanvas").mousedown(function(){
dragMap = false;
});
到
$("#myCanvas").mouseup(function(){
dragMap = false;
});
因此当释放鼠标按钮时,dragmap为false
答案 2 :(得分:0)
$("#myCanvas").mousedown(function(){
dragMap = false;
});
代码末尾的必须是mouseup
$("#myCanvas").mouseup(function(){
dragMap = false;
});