トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     動的に作成したTextFieldが半分しか消えない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mamotin
Åê¹ÆNo.43630
投稿日時: 2009-10-7 1:40
新米
居住地:
投稿: 19
使用環境:
WinXP
FlashCS3
動的に作成したTextFieldが半分しか消えない
AS3でタイマーを使ってタイマーが一つカウントするごとに、”あ”と書かれたテキストフィールドをコンテナ(sp001)にaddChildしていくスクリプトを組んでみた後に・・・

タイマーが終わったと同時にコンテナ(sp001)から、sp001.numChildrenで数えてfor文でテキストフィールドをコンテナ(sp001)から全てremoveChildするようにしました。

するとなぜかコンテナからは半分のテキストフィールドしかremoveChildされません。(addChildされるテキストフィールドの数を増やしてみても見事にちょうど半分だけがremoveChildされます・・・)なぜなんでしょうか・・・?

教えていただきたいです・・・


var sp001:Sprite = new Sprite();
addChild(sp001);

kan001();

function kan001():void {
var i:int = 0;
var timer001:Timer = new Timer(300,8);
timer001.addEventListener(TimerEvent.TIMER,time001);
timer001.addEventListener(TimerEvent.TIMER_COMPLETE,comp001);
timer001.start();
function time001(e:TimerEvent):void {
var txt001:TextField = new TextField();
txt001.text = "あ";
txt001.x = 20*i;
sp001.addChild(txt001);
i++;
}
function comp001(e:TimerEvent):void {
for(var i =0;i<sp001.numChildren;i++){
sp001.removeChildAt(0);
}
removeEventListener(TimerEvent.TIMER,time001);
removeEventListener(TimerEvent.TIMER_COMPLETE,comp001);
}
}
野中文雄
Åê¹ÆNo.43632
投稿日時: 2009-10-7 5:36
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 動的に作成したTextFieldが半分しか消えない
関数comp001()でカウンタ変数(i)を使っている意味がありません。DisplayObjectContainer.numChildrenプロパティの値と照らし合わせて、各値の変化をお確かめください。
引用:
mamotinさんは書きました:
するとなぜかコンテナからは半分のテキストフィールドしかremoveChildされません。(addChildされるテキストフィールドの数を増やしてみても見事にちょうど半分だけがremoveChildされます・・・)なぜなんでしょうか・・・?
...[中略]...
var sp001:Sprite = new Sprite();
addChild(sp001);

kan001();

function kan001():void {
	var i:int = 0;
	var timer001:Timer = new Timer(300,8);
	timer001.addEventListener(TimerEvent.TIMER,time001);
	timer001.addEventListener(TimerEvent.TIMER_COMPLETE,comp001);
	timer001.start();
	function time001(e:TimerEvent):void {
		var txt001:TextField = new TextField();
		txt001.text = "あ";
		txt001.x = 20 * i;
		sp001.addChild(txt001);
		i++;
		trace(i);  // 確認用
	}
	function comp001(e:TimerEvent):void {
		for (var i = 0; i<sp001.numChildren; i++) {
			sp001.removeChildAt(0);
			trace(i, sp001.numChildren);  // 確認用
		}
		removeEventListener(TimerEvent.TIMER,time001);
		removeEventListener(TimerEvent.TIMER_COMPLETE,comp001);
	}
}


----------------
 

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops