2012-07-20 4 views
2

mouseup 이벤트시에 & 노을이 사라집니다. 문제는 사각형을 드래그하면 캔버스에 빛이 계속 나타납니다!오브젝트 드래그 중 광선 문제

는 여기에 명확성을 위해 내 코드입니다 : this의 범위가 단지 사용할 수 있기 때문에 모든

window.onload = function(){ 
     var paper = new Raphael("holder",500,500); 

     var myRect = paper.rect(200,200,200,100,10); 
     myRect.attr({ 
      fill: "#999", 
      stroke: "#555", 
      'stroke-width': 5 
     }); 

     myRect.mousedown(function(){ 
       this.g = myRect.glow(); 
      } 
     ); 
     myRect.mouseup(function(){ 
       this.g.remove(); 
     }); 
     var start = function(){ 
      this.ox = this.attr('x'); 
      this.oy = this.attr('y'); 
     }, 
     move = function(dx,dy){ 
      var att = {x:this.ox+dx,y:this.ox+dy}; 
      this.attr(att); 
     }, 
     up = function(){ 
      // 
     }; 
     myRect.drag(move,start,up); 
    } 

답변

1

첫째, 당신은 익명의 함수 내에서 this를 사용할 수 없습니다. 당신이 myRect.drag (startup) 당신의 내부에 그 우리에게 콜백을 처리하기 때문에

둘째, 당신은 당신이 작업을 볼 수있는

그래서 내가 당신에게 fiddle을 만들어 myRect.mousedownmyRect.mouseup 필요하지 않습니다.

P. 위치 지정에 또 다른 버그가있는 것 같습니다. 몇 번 드래그하면 사각형이 커서에서 멀리 이동합니다.

+0

나는 wrt 포지셔닝 버그를 수정 하겠지만 내 버전보다 많이 개선되었지만 네모 난 부분이 이전 위치에 머물러 있다는 것을 알 수 있듯이 & nbsp 우리가 unclick 한 후에 만 ​​사라진다. 나는 그것이 내 사각형과 함께 여행을 좀하고 싶다 ... 어쨌든 고마워 –

3

start에서 개체의 광선을 제거하고 up에 다시 적용 할 수 있습니다. 이 방법으로 그림자는 보이지 않을 것입니다. 객체를 드래그하는 동안 그림자가 보이지 않지만 객체를 떨어 뜨릴 때 그림자가 나타납니다.

예를 들어 fiddle입니다.

+0

비록 드래그 부분과 함께 몇 가지 문제가 있지만 훨씬 더 접근 방식입니다, 고마워요 :) –