3

コードを使用して DisplayObject のすべての子にアクセスするにはどうすればよいですか? (私はのようなものを探していますmovieclip.children

私はこれを2つの場合に使用しています:

1) 囲んでいる MovieClip のすべての子をループして再配置する。

または

2) MovieClip のすべての子をループして削除するには

また、これは Flash CS5 プロジェクトです。

4

3 に答える 3

6

このループは、movieclip foo 内のすべての子に影響を与えます。それらに対して何をするつもりなのかはわかりませんが、ループ内で必要なメソッドを実行できます。

for (var i:uint=0; i<foo.numChildren;i++){
    foo.getChildAt(i).whateverMethodYouNeed();
}
于 2010-11-16T00:12:03.300 に答える
0

子の子を含むすべての子にアクセスする必要がある場合は、これを試すことができます。

    function doWhatever( mc:DisplayOjectContainer ):void
    {
          if( mc.numChildren > 0 )
             for( var i:int ; i < mc.numChildren ; ++i )
             {
                 //if you need to reposition
                //set the points properties here
                var point:Point = new Point( _x , _y );
                setPosition ( mc.getChildAt(i ) , point );

                //if you need to remove all children
                //do it recursively
                //remove( mc , mc.getChildAt( i );
             }
    }

    function setPosition(mc:DisplayObject , point:Point ):void
    {
        mc.x = point.x ;
        mc.y = point.y;
    }

    function remove(container:DisplayObjectContainer , child:DisplayObject ):void
    {
         //this will remove all children before being removed
         if( child is DisplayObjectContainer )
         {
             var doc:DisplayObjectContainer = child as DisplayObjectContainer;
             doWhatever( doc );
         }

         container.removeChild( child );
         child = null;
    }
于 2010-11-16T01:52:40.737 に答える
0

あなたのオブジェクトは単なる表示オブジェクトですか?UIComponent の場合は、getChildAt() と getChildByName() を numChildren プロパティと共に使用して、それらをループできます。これはフレックス プロジェクトの一部ですか、それともアクション スクリプトのみのプロジェクトですか?

DisplayObject 自体には、その子を記述するメカニズムがありません。子について知っている最も低いレベルの型は、DisplayObjectContainer です。必要なことを実行できるようにするには、オブジェクトを少なくとも DisplayObjectContainer に変換する必要がある場合があります。ただし、使用するフレックス フレームワークがある場合は、UIComponent を使用します。

表示オブジェクト

DisplayObjectContainer

UIComponent

于 2010-11-16T00:16:05.883 に答える