在我的脚本运动图像中出现故障

时间:2012-02-26 01:57:28

标签: javascript

我的javascript中出现了一个奇怪的故障(逻辑错误)我不确定它是我的数学还是我编写代码的方式。

我的想法是左键单击并拖动以在画布上滚动地图。它工作得很好,除非当我向下鼠标向下滚动第二次时,地图会重置为x0y0偏移量。

所以基本上我不能继续滚动,因为只要我放开鼠标并再次将其重新开始回到起点。

所以我就这样做了:

//this is in the init function called on body load
canvas.addEventListener("mousedown", mousePos, false);

//relevant functions
    function mousePos(e){
            mousex = e.pageX;
            mousey = e.pageY;               
            canvas.addEventListener("mousemove", movePos, false);
    }

    function movePos(e){
    canvas.addEventListener('mouseup',onMouseUp,false);
    offset_x = e.pageX - mousex; //pixels to move the map along x
    offset_y =  e.pageY - mousey; //pixels to move the map along y
    }

    function onMouseUp(){
     // on mouse up stop moving the map
    canvas.removeEventListener('mousemove',movePos,false);
    }

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  1. 您可能在此处未包含的代码中错误地使用offset_xoffset_y。在mouseup上,您应该将这些值添加到地图的总偏移量中,并将它们归零。
  2. 每次移动鼠标时都会添加一个mouseup处理程序 - 这就是你想要的吗? mouseup处理程序只应在mousePos()
  3. 中进行一次