2010-05-03 94 views
0

有一个mouseUpEvent侦听器连接到主类中的舞台,拖动movieClip时mouseUpEvent不触发处理程序,movieClip获取鼠标。在拖动项目并将鼠标从影片剪辑移开的情况下,即某处不在该项目上,而是在舞台上检测到mouseUp。MouseUpEvent在拖动MovieClip时停止工作

编辑:这里是我使用静态(Singleton)类作为movieClip作为“DragManager”的场景。无论何时必须拖动movieClip,它都会传递给DragManager并作为子项添加,当检测到舞台上的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

this.addEventListener(MouseEvent.MOUSE_UP,stageMouseUpHandler); 

的MouseUpHandler在主类

private function stageMouseUpHandler(event:MouseEvent):void 
{ 
DragManager.itemMouseUpHandler(event); 
} 

如果有什么不对的技术请指导我,我的目标是实现各层之间的拖放,并尽可能减少耦合。

+0

你可以发布你添加事件监听器的位置吗?可能有很多事情,但发布代码将是解决它的最简单方法 – 2010-05-03 17:16:15

回答

0

那么有很多方法可以完成任务。在静态侦听器函数或拖动对象时添加一些条件。 like

public static function startDragMethod(item:Item):void { instance.addChild(item); //这是DragManager的实例 var boundArea:Rectangle = new Rectangle(0,0,610,760); item.startDrag(false,boundArea); check = true; }

私有函数stageMouseUpHandler(事件:MouseEvent)方法:无效 { 如果(检查== TRUE){ DragManager.itemMouseUpHandler(事件); check = false; } }