来自进口类的舞台尺寸

时间:2013-09-19 23:43:53

标签: actionscript-3 flash dimensions stage

想要从导入的类调用stage.stagewidth / stage.stagehieght。 这是我的代码希望任何人都可以解决它或告诉我该怎么做

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
     }      
   }
 }

1 个答案:

答案 0 :(得分:1)

如果要从multyLoader实例引用舞台,则需要首先在显示列表中。最安全的方法是监听ADDED_TO_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已添加到显示列表后才调用theLoader功能。它并不像看起来那么简单。

如果您不希望theLoader因任何原因出现在显示列表中,则第三个选项是从父类传递theLoader对该阶段的引用。您可以将其作为参数添加到My_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);