2014-05-09 6 views
0

Я использую функцию перетаскивания как в скрипке, но я хочу переместить как прямоугольник, так и текст, потому что я применяю перетаскивание к множеству не только к прямоугольнику. Как я могу изменить свои функции перетаскивания, чтобы переместить весь набор?Рафаэль перетаскивает весь набор

start = function() { 
     this.ox = this.type == "rect" ? this.attr("x") : this.attr("cx"); 
     this.oy = this.type == "rect" ? this.attr("y") : this.attr("cy"); 
     this.attr({ 
      opacity: 1 
     }); 

     // Save the dragged object in global namespace. 
     window.someVar = this; 
    }, 

    move = function(dx, dy) { 
     var att = this.type == "rect" ? { 
      x: this.ox + dx, 
      y: this.oy + dy 
     } : { 
      cx: this.ox + dx, 
      cy: this.oy + dy 
     }; 
     this.attr(att); 
    }, 
    up = function() { 
     this.attr({ 
      opacity: .5 
     }); 
    delete window.someVar; 
    }; 

http://jsfiddle.net/Margo/Q3EBw/3/

ответ

0

изменение атр на множестве refrance. Если у вас есть много наборов, вам нужно проверить, что это означает this.id и использовать этот набор.

http://jsfiddle.net/Margo/Q3EBw/5/

paper = Raphael(0, 0, 500, 500); 
var ox = 0; 
var oy = 0; 
var screenSet = paper.set(); 
screenSet.push(paper.rect(0, 0, 100, 75, 0).attr({ 
     fill: 'red', stroke: 'none' 
    })); 

screenSet.push(paper.text(0 , 0 ,"Text").attr({ "text-anchor": "start" })); 

    start = function() { 

     ox = this.attr("x"); 
     oy = this.attr("y"); 
     screenSet.attr({ 
      opacity: 1 
     }); 
}, 

    move = function(dx, dy) { 
     var att ={ 
      x: ox + dx, 
      y:oy + dy 
     }; 
     screenSet.attr(att); 
    }, 
    up = function() { 
     this.attr({ 
      opacity: .5 
     }); 
     ox = 0, oy = 0; 
    }; 
screenSet.drag(move, start, up); 
Смежные вопросы