0

想从导入的类中调用 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
     }      
   }
 }
4

1 回答 1

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);
于 2013-09-20T00:01:32.817 回答