2011-07-03 11 views
0

私の主なASでは、ステージにもかかわらず、MovieClipをコンテナとして使用しています。 別のASファイルでは、Containerを参照として追加するだけでなく、addChild(箇条書きなど)を追加したいと思いますが、コードの記述方法は実際にはわかりません。別のAS3ファイルでムービークリップへの参照をリンクするにはどうすればよいですか?

私が現在の(サブ)ASでaddChildだけを動作させているのですが、それはremoveChildの問題です。

答えて

2

はあなたがあなたのメインクラス内のコンテナを持っていて、別のクラスからアクセスしたい....

を私は右のそれを得るかどうかを知りませんが、右のことですか?私はあなたが必要なものを推測

は、あなたがあなたのメインクラスのあなたのMovieClipにYOUR_REFERENCE_VARを割り当てる必要があり、この

Globals.as // you name it... 

package { 

    public class Globals extends Object { 

     public static var YOUR_REFERENCE_VAR:MovieClip; // This is a static var 

    } 

} 

ようになりGlobals.asです。プロジェクトのどこにいても、そのMovieClipにアクセスできます。

package { 
    import Globals.as; 
    import flash.display.Sprite; 

    public class GameEngine extends Sprite { 
     public function GameEngine() { 
     addEventListener (Event.ADDED_TO_STAGE, _onAddedToStage); 
     } 

     private function _onAddedToStage (evt:Event):void { 
     removeEventListener (Event.ADDED_TO_STAGE, _onAddedToStage); 

     //When you to access that MovieClip you access it like this 
     Globals.YOUR_REFERENCE_VAR.alpha = 0.5; 
     } 

    }  
} 

今、あなたは、私はこのことができます願っています。この

var spr:Sprite = new Sprite(); 
Globals.YOUR_REFERENCE_VAR.addChild (spr); 
//Remove the child 
Globals.YOUR_REFERENCE_VAR.removeChild (spr); 

ようにaddChild/removehildを使用しています。

+0

ありがとうございました^^それは私を助けます。 –

+0

しかし小さな問題です^^ "多くのASファイルからaddChildを使ってaddChildの順序を制御するにはどうすればいいですか?T_T –

+0

addChildを使用すると、その子は常に表示リストの先頭に移動します。特定の子のインデックスを変更するには、setChildIndex(yourChild、whatIndex)を使用します。numChildrenを使用している子の総数を取得できることに注意してください。 setChildIndex(yourChild、numChildren-1); – Dimitris

0

参照によってムービークリップを渡すことができます。ここに簡単な例があります:

package { 
    import flash.display.MovieClip; 
    import flash.display.Sprite; 

    public class Main extends Sprite { 
     public function Main() { 
      //create your movie clip 
      var movieClip:MovieClip = new MovieClip(); 
      //if your MovieClip is in the Flash IDE library setup an export name and do 
      //var flasLibraryMovieClip : YourMovieClipExportName = new YourMovieClipExportName() 

      //add your movie clip to the display list 
      addChild(movieClip); 

      //instantiate your second class 
      //and pass the movie clip to the class constructor 
      var test : Test = new Test(movieClip);  
     } 
    } 
} 


package { 
    import flash.display.MovieClip; 
    import flash.display.Sprite; 

    public class Test extends Sprite { 
     public function Test(movieClip : MovieClip) { 
      //do stuff with the movie 
     }  
    } 
} 
関連する問題