【发布时间】:2015-01-13 19:52:48
【问题描述】:
这里的JSFiddle:JSFiddle
拖动一组对象时,单个对象的位置属性似乎没有得到更新。无论我使用默认的 drag() 处理程序还是定义自己的处理程序,都会发生这种情况。甚至 group BBox 操作似乎也没有更新。代码:
var s = Snap("#svg");
var move = function (dx, dy, posx, posy) {
this.attr({
x: posx,
y: posy
});
//this.transform("t" + dx + "," + dy);
};
var block = s.rect(100, 100, 100, 100);
var circle = s.circle(100, 100, 50);
var group = s.g(block, circle);
//group.drag(move, function () {}, function () {});
group.drag();
//block.drag(move, function () {}, function () {});
//just a way to keep info coming w/o an interminable script
document.addEventListener('mousemove', function (e) {
bbox = block.getBBox();
block_x = block.attr("x");
block_y = block.attr("y");
gbbox = group.getBBox();
console.log("block is at " + block_x + "," + block_y,
" Block Bbbox is at " + bbox.x + "," + bbox.y,
" Group Bbbox is at " + gbbox.x + "," + gbbox.y);
}, false);
如果我只定义一个对象(例如,一个矩形)并将其排除在组之外,并将我自己的“移动”函数传递给拖动调用,并包括显式设置“x”和“y”属性,然后就可以了。但是,如果我将 rect 包含在一个组中,那么...我不知道该怎么做,并且我尝试了几种方法(请参阅显示我尝试过的内容的多个注释掉的行)。我需要知道 rect 子组元素在拖动后结束的位置,或者至少是整个组的 BBox。这些似乎都没有得到更新——即我输入的控制台日志永远显示相同的数字,无论我将对象移动到哪里。
谁能帮忙?
这里的JSFiddle:JSFiddle
【问题讨论】:
标签: javascript snap.svg