2013-08-05 2 views
0

캔버스를 클릭하고 이미지를 드래그 할 수 있지만 시작 지점으로 돌아가는 것이 정말 짜증납니다. 왜 내가 내 논리에서 만든 실수를 해결할 수 없는지 모르겠다.캔버스가 mousemove 이벤트로 깜박임

mousemove 이벤트가있다 : 나는 문제를 다시 만들 jsfiddle을 만들어

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; 
     } 
    } 

: 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