2013-08-05 113 views
0

我有一個畫布,我點擊並拖動圖像,但他們保持「捕捉」回到他們的起點,這真的很煩人。我不知道爲什麼我不能解決我在邏輯中犯的錯誤。畫布閃爍mousemove事件

mousemove事件有:

function updt(evt) { 
     var difx = evt.pageX - clickx; 
     var dify = evt.pageY - clicky; 
      offsets.cur_offsetx = init_offsetx - difx; 
      offsets.cur_offsety = init_offsety - dify; 

     if (offsets.cur_offsetx < 0) { 
       offsets.cur_offsetx = 0; 
       clickx = evt.pageX; 
     } 

     if(offsets.cur_offsety < 0){ 
       offsets.cur_offsety = 0; 
       clicky = evt.pageY; 
     } 
    } 

我做了一個的jsfiddle重新創建問題:http://jsfiddle.net/jQkNv/1/

單擊並拖動鼠標到合適的,它會不斷捕捉圖像回自己原始起點。

我該如何解決這個問題?

回答

3

Live Demo

它更改爲我下面的工作。

if (offsets.cur_offsetx <= 0) { 
      offsets.cur_offsetx = 0; 
    } 

    if(offsets.cur_offsety <= 0){ 
      offsets.cur_offsety = 0; 
    } 

編輯我停止更新xy,它似乎工作。

+0

啊謝謝。我注意到的一件事是,當你點擊0並繼續拖動時,差異變爲負值,所以你不能立即向右滾動,這是否有意義?有沒有辦法解決這個問題。 – Sir

+0

@Dave我更新了我的答案似乎現在工作。你必須將鼠標位置滑回原來開始的位置,以便讓它走向另一個方向,這看起來似乎是它*應該*正常工作,我猜。 – Loktar

+1

只要記住聽窗口對象上的'mouseup'而不是畫布,或者如果在畫布元素之外釋放按鈕,則鼠標向下將被卡住。 – K3N