Как предотвратить перетаскивание за пределы родительского контейнера во Flex / Flash? - PullRequest
1 голос
/ 23 ноября 2010

У меня есть холст, на котором я рисую фигуры, такие как прямоугольник и т. Д. Когда я перемещаю фигуру с помощью своего собственного обработчика мыши, она может выходить за пределы родительских границ.

Я проверяю, находится ли ребенок вне предела родителя, чтобы вернуть его обратно:

   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 !!

Как предотвратить изменение размера родителя, когда ребенок выходит за исходные границы родителя?

1 Ответ

1 голос
/ 23 ноября 2010

при создании родительского объекта сохраните границы для переменной вне вашей функции, чтобы вы могли позже вызвать сохраненный размер.Если вы продолжаете проверять границы внутри своей функции, то, конечно, она будет меняться по мере изменения объектов в родительском объекте.Или установите границы для mouseDown, но не для перетаскивания, чтобы у вас были обновленные границы, прежде чем объект перетаскивания достигнет края.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...