拖动MovieClip时,MouseUpEvent停止工作

时间:2010-05-03 17:05:04

标签: actionscript-3 action

有一个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);

主类

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

如果技术出现问题请指导我,我的目标是在不同层之间实现拖放,并尽可能减少耦合。

1 个答案:

答案 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; } }