如何限制画布中的拖放区域

时间:2011-04-19 07:43:16

标签: flex actionscript drag-and-drop

我有一个画布,比方说尺寸为500x600。我在画布中有一些控件。用户可以通过拖放重新排列控件。但我想限制画布中的拖放。

例如:canvas中有一个按钮。用户可以将按钮拖放到画布内的任何位置。但是如果用户试图将按钮拖出画布边界,它应该粘在画布边界上。 / p>

如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

startDrag()的签名是public function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void

第二个参数允许您传递Rectangle作为DisplayObject的边界。它不会被拖到这个

之外

答案 1 :(得分:0)

您应该在目标控件上捕获MouseDown事件,然后订阅MouseMove事件。在MouseMove处理程序中,您应该获取Canvas和控件的矩形(在相同的坐标空间中)并使用containsRect()方法(文档为here)来确定控件是否仍在Canvas中。如果它熄灭你就不应该移动它。

并且不记得在MouseUp上取消订阅MouseMove事件!