snap.svg drag" real"位置

时间:2014-11-18 14:20:13

标签: javascript svg snap.svg

我想将一条线拖到我拖动的元素上。为此,我需要"真实"拖动时元素的位置。

我试过了:

textSign.drag(function (dx, dy, posx, posy) {
    var myMatrix = new Snap.Matrix();
    myMatrix.translate(dx,dy); 
    this.transform(myMatrix.toTransformString());

    //drag another element

}, function(x,y,event){
    //contains only mouse position
}, function(){
    this.attr({x: parseFloat(this.attr("x")) + this.matrix.e, y: parseFloat(this.attr("y")) + this.matrix.f});
    this.transform('t0,0');
});

我可以在移动时获得(矩阵或某个)的实际位置吗?

1 个答案:

答案 0 :(得分:2)

您可以通过抓取要移动的元素的边界框来执行此操作,然后将属性更改为该属性。

因此附加代码将是......

  var bb = this.getBBox();
  line.attr({ x2: bb.cx, y2: bb.cy })

jsbin

你也可以摆脱矩阵的东西......

jsbin