【发布时间】:2011-10-19 19:31:58
【问题描述】:
我在 Raphael 中有以下用于拖动形状的代码:
var start = function() {
this.ox = 0;
this.oy = 0;
self.bringToFront();
},
move = function(dx, dy) {
var a = self.getAngle(self.rotation),
bb = self.shape.getBBox();
switch(a){
case 90:
self.shape.translate(dy - this.ox, this.oy - dx);
this.ox = dy;
this.oy = dx;
break;
case 180:
self.shape.translate(this.ox - dx, this.oy - dy);
this.ox = dx;
this.oy = dy;
break;
case 270:
self.shape.translate(this.ox - dy, dx - this.oy);
this.ox = dy;
this.oy = dx;
break;
default:
self.shape.translate(dx - this.ox, dy - this.oy);
this.ox = dx;
this.oy = dy;
}
},
end = function() {
};
(self.shape 是一组 Raphael 路径和矩形)
我正在尝试获取它,因此您不能将形状拖出 SVG 画布区域。 现在我能够获取形状边界框的坐标,bb move 函数中的变量。我试图添加对if(bb.x < 10)... 的检查,但我不知道如何将约束设置为:“不要让它进一步向左移动”。我正在为边界框检查 x 的位置,然后又试图约束形状的 x 位置,这是否有问题?
【问题讨论】:
-
这不起作用?
if ( bb.x < 10 ) bb.x = 10 -
不。我正在使用边界框上的 x 来检查位置,但我正在翻译形状的 x、y。如果这有意义的话。
标签: javascript svg raphael