2010-05-03 97 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; } }