Actionscript 3 导入类的阶段维度

Actionscript 3 导入类的阶段维度,actionscript-3,flash,dimensions,stage,Actionscript 3,Flash,Dimensions,Stage,I要从导入的类调用stage.stagewidth/stage.stageHight。 这是我的代码,希望任何人都能修复它或告诉我如何做 package { import flash.display.MovieClip; import multyLoader; public class program extends MovieClip { private var theLoader:multyLoader = new multyLoader(); p

I要从导入的类调用stage.stagewidth/stage.stageHight。 这是我的代码,希望任何人都能修复它或告诉我如何做

package 
 {
  import flash.display.MovieClip;
  import multyLoader;
  public class program extends MovieClip
    {
     private var theLoader:multyLoader = new multyLoader();
     public function program()
       {
      // constructor code-----------------
      theLoader.My_Loader(mc_loaderHolder,myXML.IMAGE[1].@URL);
       }
     }
 }
以及multyLoader.as文件代码

 package 
 {
  public class multyLoader extends MovieClip
   {
    public function multyLoader()
     {
      trace(any);
     }
    public function My_Loader(loading_holder,myLoaderURL:String)
     {
      // pla pla code
      loading_holder.x = (stage.stageWidth - loading_holder.width) / 2; // get Error #1009 or stage not found.
      loading_holder.y = (stage.stageHeight - loading_holder.height) / 2; // get Error
     }      
   }
 }

如果要从
multyLoader
实例引用Stage,则需要首先将其显示在显示列表中。最安全的方法是监听
ADDED_to_STAGE
事件,并仅在该事件触发后引用该STAGE

public function My_Loader(loading_holder, myLoaderURL:String){
    addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}

protected function onAddedToStage(e:Event){
    removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
    loading_holder.x = (stage.stageWidth - loading_holder.width) / 2;
    // etc...
}
您还可以确保在确保加载程序已添加到显示列表后,只调用
My_Loader
函数。它并不总是像看起来那么简单

第三个选项是,如果您不希望加载程序出于任何原因出现在显示列表中,则将从父类向加载程序传递对stage的引用。您可以将其作为参数添加到
My\u Loader
函数中

public function My_Loader(loading_holder, myLoaderURL:String, myStage:Stage){
    loading_holder.x = (myStage.stageWidth - loading_holder.width) / 2;
    // etc...
}
从父类调用它,如下所示:

theLoader.My_Loader(mc_loaderHolder, myXML.IMAGE[1].@URL, this.stage);