0

インポートしたクラスから stage.stagewidth/stage.stagehieight を呼び出したいこれが私のコードです。誰かがそれを修正するか、その方法を教えてください

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何らかの理由で表示リストに表示したくない場合の 3 番目のオプションは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 に答える