【问题标题】:RaphaelJS Move Rotated elementsRaphaelJS 移动旋转元素
【发布时间】:2013-03-01 01:38:03
【问题描述】:

当我尝试使用正常的移动拖动功能沿直线移动它时,我有一个旋转了 45 度的矩形,它随着 45 度旋转移动。我已经看到很多关于这个的帖子,并且它打算像这样工作,但我还没有找到一个简单的方法来解决这个问题。

我知道 raphael.free_transform.js 插件,但我不需要 90% 的脚本。

从其他帖子中我知道我应该使用 Math.atan2,但可惜我的数学技能不是那么好。

我当前的移动函数如下所示:

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);
        for (var i = connections.length; i--;) {
            r.connection(connections[i]);
        }
        r.safari();
    }

【问题讨论】:

    标签: javascript raphael jquery-svg


    【解决方案1】:

    您必须使用“转换”方法而不是简单地更改 x-y 属性。

    var data = {};
    var R = Raphael('raphael', 500, 500);
    var rect = R.rect(100, 100, 100, 50).attr({fill: "#aa5555"}).transform('r45');
    var default_transform = rect.transform();
    
    var onmove = function (dx, dy) {
        rect.transform(default_transform + 'T' + dx + ',' + dy);
    };
    var onstart = function () {};
    var onend = function () {
        default_transform = rect.transform();
    };
    
    rect.drag(onmove, onstart, onend);
    

    我在 JSfiddle 上为你创建了一个现场演示: http://jsfiddle.net/pybBq/

    请注意,您必须在转换字符串中使用大 T 字母(而不是小 t)以使转换成为绝对而非相对。请阅读 Raphael 关于转换的文档以获取更多信息:http://raphaeljs.com/reference.html#Element.transform

    【讨论】:

    • 当你选择->移动->选择->移动矩形时,它仍然可以工作,但仍然不是 100%
    • OK 再次检查 JSfiddle(我更新了“onend”方法)> jsfiddle.net/pybBq/1
    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多