编程语言
首页 > 编程语言> > javascript-如何在Raphael中使元素变得不可拖动?

javascript-如何在Raphael中使元素变得不可拖动?

作者:互联网

我使用element.drag(start,move,up);使元素可拖动.

当我想使元素变得不可拖动时,可以使用the documentation的方法来实现此目的:

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

这样可以使该元素不再移动.

此方法有两个问题:

>这会使页面上的所有元素变为不可拖动.
> 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);     
};​

Try it out with this jsFiddle

解决方法:

这是已知的错误.将在下一个版本中修复.

标签:drag-and-drop,raphael,javascript
来源: https://codeday.me/bug/20191023/1915614.html