表示リストを一斉にremoveChildするとき

| | comments(0) | truckbacks(0)

ちょっとハマったのでメモ。
表示リスト上のオブジェクトを一斉に削除しようとして↓みたいな感じで書いたら

function removeDisplayList(container:DisplayObjectContainer):void
{
	for (var i:uint=0; i < container.numChildren; i++)
	{
		container.removeChildAt(numChildren - 1);
	}
}

なんかへんな消え方する。
なんとなく規則性があるんで trace してみたら、リスト番号が一つ飛ばしにremoveされてる。なんでじゃー?と思って調べてみたら条件文に numChilren 直接いれちゃうと、削除していくそばから numChilren 自体が減ってっちゃうからだった。考えてみればそうだ、確かに。
ということでfor文の前で一旦総数を変数に保存しとけばいい、ていうまた素人な感じ。

function removeDisplayList(container:DisplayObjectContainer):void
{
	var num:int = container.numChildren;
	 for (var i:uint = 0; i < num; i++)
	{
		container.removeChildAt(numChildren - 1);
	}
}
Check

トラックバック(0)

このブログ記事を参照しているブログ一覧: 表示リストを一斉にremoveChildするとき

このブログ記事に対するトラックバックURL: http://www.nrd-studio.com/mt/mt-tb.cgi/151

コメントする

このブログ記事について

このページは、Biz_Rが2008年12月26日 00:07に書いたブログ記事です。

ひとつ前のブログ記事は「しばらくjQuery使い始めて」です。

次のブログ記事は「フォントブック」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。