Как ограничить область перетаскивания на холсте - PullRequest
2 голосов
/ 19 апреля 2011

У меня есть холст, скажем, размером 500x600. У меня есть некоторые элементы управления внутри этого холста. Пользователь может переставить элементы управления путем перетаскивания. Но я хочу ограничить перетаскивание внутри этого холста.

Например: на холсте есть кнопка. Пользователь может перетаскивать кнопку в любом месте холста. Но если пользователь пытается перетащить кнопку за пределы холста, он должен придерживаться границы холста.

Как этого добиться?

Ответы [ 2 ]

3 голосов
/ 19 апреля 2011

Подпись для startDrag(): public function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void

Второй параметр позволяет вам передать Rectangle в качестве границы для вашего DisplayObject.Это не будет перетащено за пределы этого

0 голосов
/ 19 апреля 2011

Вы должны перехватить событие MouseDown на целевых элементах управления, а затем подписаться на событие MouseMove. В обработчике MouseMove вы должны получить Canvas и прямоугольники элемента управления (в том же координатном пространстве) и использовать метод containsRect() (документация здесь ), чтобы определить, находится ли элемент управления в Canvas. Если он гаснет, не стоит его двигать.

И не забудьте отменить подписку на событие MouseMove на MouseUp!

...