2010-05-05 54 views
0

編輯:如果我有一個名爲Items的類,它有一個從url加載的movieclip實例。項目上的startDrag失敗。如果Items包含我們從SWC啓動的一個movieclip(不加載它),則Drag工作正常。拖動不工作繼承自Moviclip的自定義類

現在如何解決這個問題,我有一個類,它有一個從外部加載的movieClip。

我有以下代碼:

包{ 進口flash.display.Sprite; import flash.events.MouseEvent;

import lib.CustomEvents.ItemLoadCompleteEvent; 
import lib.Room.Item; 
import lib.Room.ItemStruct; 

public class DragTest extends Sprite 
{ 
    private var itemInstance:Item; 
    public function DragTest() 
    { 
     var tempItemStruct:ItemStruct = new ItemStruct("test",0,0,200,250,"wall","","inventory"); 
     itemInstance = new Item(tempItemStruct); 
     itemInstance.addEventListener(ItemLoadCompleteEvent.CONTROL_TYPE,loadComplete); 

     stage.addEventListener(MouseEvent.MOUSE_UP,mouseUp); 
    } 

    private function loadComplete(e:ItemLoadCompleteEvent):void 
    { 
     itemInstance.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown); 
     this.addChild(itemInstance); 

    } 

    private function mouseUp(e:MouseEvent):void 
    { 
     itemInstance.stopDrag(); 
     trace("MouseUp"); 
    } 

    private function mouseDown(e:MouseEvent):void 
    { 
     itemInstance.startDrag(); 
     trace("MouseDown"); 

    } 

} 
} 

我用一個正常的剪輯使用相同的代碼,它的工作原理。當我用我自己定義的項目它不起作用。這裏是細節。

itemStruct:包含要製作的項目的屬性。 item:加載itemstruct定義的項目並將其放入movieclip(項目從movieclip繼承)

上述代碼的跟蹤顯示只有mouseUp函數工作時mouseDown不起作用。雖然相同的代碼工作正常進行簡單的影片剪輯

我已經嘗試

stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown); 

編輯:我曾嘗試把鼠標按下舞臺上再次,如果我點擊該項目並拖動之外的階段,既鼠標按下和起來似乎工作。但是,如果我點擊該項目並拖動。仍然沒有運氣。我還在舞臺上將該項目添加爲動畫片段。

回答

0

事件可能是從加載的剪輯派發的,而不是項目本身。嘗試使用mouseChildren屬性來捕獲所有事件。

item.mouseChildren = false; 
+0

我已經讓它工作了,但仍然需要一個解決方案,將movDipl的parentClass上的mouseDown連接起來。它仍然在直接運動剪輯本身。 – 2010-05-06 17:36:18