コードを使用して DisplayObject のすべての子にアクセスするにはどうすればよいですか? (私はのようなものを探していますmovieclip.children)
私はこれを2つの場合に使用しています:
1) 囲んでいる MovieClip のすべての子をループして再配置する。
または
2) MovieClip のすべての子をループして削除するには
また、これは Flash CS5 プロジェクトです。
コードを使用して DisplayObject のすべての子にアクセスするにはどうすればよいですか? (私はのようなものを探していますmovieclip.children)
私はこれを2つの場合に使用しています:
1) 囲んでいる MovieClip のすべての子をループして再配置する。
または
2) MovieClip のすべての子をループして削除するには
また、これは Flash CS5 プロジェクトです。
このループは、movieclip foo 内のすべての子に影響を与えます。それらに対して何をするつもりなのかはわかりませんが、ループ内で必要なメソッドを実行できます。
for (var i:uint=0; i<foo.numChildren;i++){
foo.getChildAt(i).whateverMethodYouNeed();
}
子の子を含むすべての子にアクセスする必要がある場合は、これを試すことができます。
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;
}
あなたのオブジェクトは単なる表示オブジェクトですか?UIComponent の場合は、getChildAt() と getChildByName() を numChildren プロパティと共に使用して、それらをループできます。これはフレックス プロジェクトの一部ですか、それともアクション スクリプトのみのプロジェクトですか?
DisplayObject 自体には、その子を記述するメカニズムがありません。子について知っている最も低いレベルの型は、DisplayObjectContainer です。必要なことを実行できるようにするには、オブジェクトを少なくとも DisplayObjectContainer に変換する必要がある場合があります。ただし、使用するフレックス フレームワークがある場合は、UIComponent を使用します。