2012-02-26 44 views
1

我在我的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
  1. 您可能會錯誤地在這裏不包括代碼使用offset_xoffset_y。在mouseup上,您應該將這些值添加到地圖的總偏移量中,並將它們歸零。
  2. 每次移動鼠標時,都會添加一個mouseup處理程序 - 是您想要的嗎?鼠標鬆開處理程序應在mousePos()
+0

只有一次instaled好鼠標起來就是停止地圖所抵消 - 所以一旦你離開了鼠標按鍵映射停止移動的去 - 但我仍然需要得到x和在稍後的日期點擊鼠標位置以便點擊可用對象。所以我認爲那是最好的地方。 offset_x和offset_y是腳本頂部的全局變量: var offset_x = 0; var offset_y = 0; 只有上面顯示的函數改變它們的值。然後我在draw()函數中使用它們。但由於某些未知的原因,鼠標將其重置爲原來的位置。 = / – Sir 2012-02-26 03:31:26