2011-05-31 71 views
1

我想通過addChild()方法添加一個對象到我的主要階段。通常,在FLA內部工作時,使用addChild(myObject)工作得很好。但是,它不適用於外部AS類。ActionScript AddChild從類階段

所有我已經找到了其他的教程教我如何做這樣的事情,這不是我所需要的:

var myMovieClip:MovieClip = new MovieClip(); 
myMovieClip.addChild(myObject); // Works great, but not what I need 

可能有人請告訴我如何將一個對象添加到我的主舞臺通過外部AS類。

謝謝你的時間。

回答

2

如果這是你的文檔類或具有有效級引用的類,你可以使用:

stage.addChild(myObject); 

編輯 - 添加例子。

這是一個擴展EventDispatcher並傳遞'stage'參數的示例類。

首先,類:

package { 

    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.events.EventDispatcher; 

    public class MyClass extends EventDispatcher { 

     private var _stage:Stage; 

     public function MyClass(stage:Stage) { 
      _stage = stage; 

      var mc:MovieClip = new MovieClip(); 
      _stage.addChild(mc); 
     } 
    } 
} 

和使用(假設這是從具有參考 '舞臺' 一類):

var obj:MyClass = new MyClass(null, this.stage); 
+0

嗯...這似乎有點難以做到,因爲這個類已經擴展了EventDispatcher,我真的想避免必須實現它,因爲我需要擴展MovieClip。任何其他解決方法? – 2011-05-31 20:41:08

+1

你的課程延伸到什麼程度?你遇到了什麼錯誤?如果您的類的實例已添加到顯示列表中,您應該可以像上面提到的那樣訪問舞臺......它不需要是文檔類。 – Corey 2011-05-31 20:44:44

+0

是的,我的課程擴展了EventDispatcher。我對AS3比較陌生,所以,你是什麼意思「添加到顯示列表」? – 2011-05-31 20:45:54

0

你已經嘗試以下?

stage.addChild(myObject) 
+0

是的,我做到了。它沒有工作。 :(謝謝,雖然! – 2011-05-31 20:46:15

0

Corey的方法有效。您不需要像在他的示例中那樣擴展EventDispatcher。

什麼是他的榜樣重要的是:

private var _stage:Stage; 
public function MyClass(stage:Stage) { 
_stage = stage; 

var mc:MovieClip = new MovieClip(); 
_stage.addChild(mc); 
} 

通知他如何使用_stage變量引用它。

相關問題