2012-07-20 62 views
2

我有一個在mousedown事件上發光的矩形&在mouseup事件中,發光消失。問題是當我拖動矩形時,發光持續在畫布上!拖動對象時發光問題

這裏是我的代碼爲清楚:

所有的
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匿名函數裏面,因爲this範圍只是在那裏提供。

其次,你不需要myRect.mousedownmyRect.mouseup因爲你處理那些我們您myRect.dragstartup)內的回調

所以我做了你fiddle,你可以看到它的工作。

P.S.似乎還有另一個定位錯誤:當你拖動幾次矩形從光標移開。

+0

我會修復定位錯誤,你的改進比我的版本好很多,但是在你的小提琴中,你可以看到發光停留在矩形的前一個位置並且只有在我們取消點擊後才消失....我有點想要它與我的矩形一起旅行...反正謝謝 – 2012-07-21 04:59:06

3

您可以刪除start上的物體發光,然後再將其應用於up。通過這種方式,當您拖動對象時,陰影不會顯示,但當您放棄該對象時將會在那裏。

以下是您的示例中的fiddle

+0

這是更好的方法,雖然拖動部分雖然有一些問題,謝謝:) – 2013-03-30 05:30:08