Как сделать элемент нерушимым в Рафаэле? - PullRequest
3 голосов
/ 11 октября 2010

Я сделал элемент перетаскиваемым с помощью element.drag(start, move, up);

Когда я хочу сделать элемент не стираемым, я могу в некоторой степени добиться этого, используя метод из документации :

element.undrag(f); // Any undefined variable works as the argument

Это делает невозможным перемещение элемента.

У этого метода есть 2 проблемы:

  1. Это делает все элементов на странице не стираемыми.
  2. start() по-прежнему срабатывает один раз для каждогоэлемент.У меня произошла смена непрозрачности в start(), так что это вполне очевидно.

Как сделать элемент не стираемым, чтобы воздействовал только на этот элемент и start() не срабатывал?

Вот что у меня так далеко.Следующее пытается сделать элемент не стираемым после одного перетаскивания:

wiwindow.onload = function() {
    var R = Raphael("canvas", 500, 500),
    c = R.circle(100, 100, 50).attr({
        fill: "hsb(.8, 1, 1)",
        stroke: "none",
        opacity: .5
    }),
    d = R.circle(200, 200, 50).attr({
        fill: "hsb(1, 1, .8)",
        stroke: "none",
        opacity: .5
    }),        
    start = function () {
        // storing original coordinates
        this.ox = this.attr("cx");
        this.oy = this.attr("cy");
        this.attr({opacity: 1});
    },
    move = function (dx, dy) {
        // move will be called with dx and dy
        this.attr({cx: this.ox + dx, cy: this.oy + dy});
    },
    up = function () {
        // restoring state
        this.attr({opacity: .5});
        this.undrag(notDefinedVariable); // Try to make it undragable
    };

    c.drag(move, start, up);    
    d.drag(move, start, up);     
};​

Попробуйте это с помощью этого jsFiddle

Ответы [ 2 ]

3 голосов
/ 04 октября 2012

Получил его на работу в 2.0

Я должен был изменить

this.undrag(notDefinedVariable); // Try to make it undragable

до

this.undrag(); // Try to make it undragable

Undefined необходимо было включить в предыдущую версию, чтобы заставить его работать на 1/2, как описано выше.

2 голосов
/ 11 октября 2010

Это известная ошибка. Будет исправлено в следующем выпуске.

...