Изображения не имеют атрибутов cx cy, см. Спецификация SVG (Рафаэль использует SVG для визуализации графики), вы должны использовать атрибуты x и y.
up = function () {
// restoring state
this.attr({opacity: .5});
};
var start = function () {
// storing original coordinates
this.ox = this.attr("x");
this.oy = this.attr("y");
this.attr({opacity: 1});
},
move = function (dx, dy) {
// move will be called with dx and dy
this.attr({x: this.ox + dx, y: this.oy + dy});
},
up = function () {
// restoring state
this.attr({opacity: .5});
};
или используйте преобразования:
elipse.tx = 0;
elipse.ty = 0;
var start = function () {
this.attr({opacity: 1});
},
move = function (dx, dy) {
//This is quick hack to restore previous position - because translate use
//relative transformation
this.translate(-this.trx, -this.try);
this.translate(dx, dy);
this.tx = dx;
this.ty = dy;
},
up = function () {
this.attr({opacity: .5});
};
elipse.drag(move, start, up);