0

有沒有理由不能工作?AS3類無法將MovieClip作爲參數傳遞給其超類...?

下面是一個代碼示例:

main.as

package{ 
    import flash.display.MovieClip; 
    public class main extends MovieClip{ 
     public function main(){ 
      addChild(new Square()); 
     } 
    } 
} 

Square.as(這是一個鏈接的影片剪輯有一個呼籲其時間軸 「submc」 影片剪輯)

package{ 
    import flash.display.MovieClip; 
    public class Square extends SuperSquare{ 
     public var submc:MovieClip; 
     public function Square(){ 
      super(submc, 1234); 
      trace("submc : " + submc); 
     } 
    } 
} 

SuperSquare.as

package{ 
    import flash.display.MovieClip; 
    public class SuperSquare extends MovieClip{ 
     public function SuperSquare(_p:MovieClip, _value:Number){ 
       trace("_p : " + _p + " _value : " + _value); 
     } 
    } 
} 

當運行這段代碼,它的痕跡:

_p : null _value : 1234 
submc : [object MovieClip] 

的「submc」屬性無法通過廣場超級構造得到。我可能錯過了什麼?有什麼建議?

感謝

回答

0

老回答 您必須初始化submc。 Square類的主體應該是這樣的:

public var submc:MovieClip; 
public function Square() 
{ 
    submc = new MovieClip(); 
    super(submc, 1234); 
    trace("submc : " + submc); 
} 

變量submc爲空,直到您初始化或使其引用一些其他的實例化對象。

新建答案 如果引用的時間軸上的元素,你可能需要等到父元素已被添加到您引用嵌套元素之前的階段。爲此,您可以爲ENTER_FRAME或ADDED_TO_STAGE添加事件偵聽器。

package{ 
    import flash.display.MovieClip; 
    public class Square extends SuperSquare 
    { 
     public var submc:MovieClip; 
     public function Square() 
     {  
      // -- either one of these should work 
      addEventListener(Event.ADDED_TO_STAGE, onAdded); 
      addEventListener(Event.ENTER_FRAME, validateStage); 
     } 
    } 

    public function onAdded(event:Event):void 
    { 
     // -- creates a problem because you can only call a super constructor in a constructor 
     // super(submc, 1234); 
     trace("submc : " + submc); 
    } 

    public function validateStage(event:Event):void 
    { 
     if(!stage) return; 
     if(stage.stageWidth == 0) return; 

     // -- ok to reference stage elements now 

     removeEventListener(Event.ENTER_FRAME, validateStage); 
    } 
} 

我不完全確定這是你的問題。但是,我很快就看到了與引用舞臺元素相似的問題。

+0

這就是我發佈的內容,直到我意識到他寫道它在時間軸上。儘管如此,這仍然是個問題。 – dain 2011-06-03 16:13:39

+0

啊好吧...謝謝你的頭,改變我的答案... – JeremyFromEarth 2011-06-03 16:18:24

+0

我做了一些其他的測試,但我最終使用了一個ADDED_TO_STAGE事件。在例子中,sub_mc引用是null,直到Square被添加到舞臺上(如你所說的)。我必須使用此事件,以便movicelip引用通過變量「sub_mc」獲取*鏈接*。這證實了我的問題:將一個moviclip引用傳遞給「超類」構造函數是不可能的......感謝您的答案! – Simmoniz 2011-06-07 13:15:24

相關問題