有一个mouseUpEvent侦听器附加到主类的舞台上,而拖动movieClip时mouseUpEvent不会触发处理程序,而movieClip会粘在鼠标上。当项目被拖动并且鼠标移离movieClip时,即不在项目上的某个地方,而是在舞台上检测到mouseUp。
编辑:这是我使用静态(Singleton)类作为movieClip作为“DragManager”的场景。每当必须拖动movieClip时,它将被传递给DragManager并作为子项添加,当检测到来自stage的mouseUp时,将调用dragManager的另一个静态函数来停止拖动并将movieClip放在适当的图层上。这是DragManager中的静态函数,它可以从不同的层中调用MouseDown。
public static function startDragMethod(item:Item):void
{
instance.addChild(item); //This is the instance of the DragManager
var boundArea:Rectangle = new Rectangle(0,0,610,760);
item.startDrag(false,boundArea);
}
在主类的构造函数中,我为MouseUpEvent添加了eventHandler
this.addEventListener(MouseEvent.MOUSE_UP,stageMouseUpHandler);
主类
中的MouseUpHandlerprivate function stageMouseUpHandler(event:MouseEvent):void
{
DragManager.itemMouseUpHandler(event);
}
如果技术出现问题请指导我,我的目标是在不同层之间实现拖放,并尽可能减少耦合。
答案 0 :(得分:0)
有很多方法可以完成任务。在静态侦听器函数或拖动对象时添加一些条件。 像
public static function startDragMethod(item:Item):void { instance.addChild(项目); //这是DragManager的实例 var boundArea:Rectangle = new Rectangle(0,0,610,760); item.startDrag(假的,boundArea); check = true; }
私有函数stageMouseUpHandler(event:MouseEvent):void { 如果(检查==真) { DragManager.itemMouseUpHandler(事件); check = false; } }