У меня есть холст, на котором я рисую фигуры, такие как прямоугольник и т. Д. Когда я перемещаю фигуру с помощью своего собственного обработчика мыши, она может выходить за пределы родительских границ.
Я проверяю, находится ли ребенок вне предела родителя, чтобы вернуть его обратно:
var bounds:Rectangle = this.getBounds(this.parent);
var p:Point;
if (bounds.x <0) {
p = new Point(0,0);
p.offset(-bounds.x,0);
}
if (bounds.y <0) {
if (!p) p = new Point(0,0);
p.offset(0,-bounds.y);
}
if (bounds.y+bounds.height > this.parent.height) {
if (!p) p = new Point(0,0);
p.offset(0,-bounds.y-height+this.parent.height);
}
if (bounds.x+bounds.width > this.parent.width) {
if (!p) p = new Point(0,0);
p.offset(-bounds.x-width+this.parent.width,0);
}
if (p) {
trace("invoking snapInside ", p);
snapInside(p);
Метод snapInside вызывается, когда я выхожу за пределы левой или верхней границы. Но когда дочерний элемент перетаскивается за правую или нижнюю границу, я обнаружил, что среда выполнения Flex / Flash автоматически увеличивает высоту и ширину родительского элемента. Допустим, что родительский размер изначально был 800x600, если дочерние границы Y превышают 800, скажем, на 20 пикселей, я считаю, что this.parent.height автоматически изменяет размер flex до 820 !!
Как предотвратить изменение размера родителя, когда ребенок выходит за исходные границы родителя?