home > 投稿 > AS3:addChildのタイミング
2007/12/31

AS3:addChildのタイミング


年末です。
DisplayContainerをつくり、その中に更にDisplayObjectを入れます。
このとき、コンテナがステージに配置されたのを確認し、
続いてその中にスプライトなどを置く、と、タイミングを計って配置していきます。
すると妙なことが起こります。

コード
package {
	import flash.display.Sprite;
	import flash.events.Event;

	public class addremove extends Sprite
	{
		
		public var content:Sprite;
		public var container:Sprite;
		
		public function addremove()
		{
			container = new Sprite();
			container.addEventListener(Event.ADDED_TO_STAGE, onAdded_container);
			
			content = new Sprite();
			content.graphics.beginFill(0xffff00, 1);
			content.graphics.drawCircle(100, 100, 10);
			content.addEventListener(Event.ADDED_TO_STAGE, onAdded_content);

			addChild(container);
		}
		
		private function onAdded_container(e:Event):void
		{
			trace("onAdded_container");
			container.addChild(content);
			
		}
		private function onAdded_content(e:Event):void
		{
			trace("onAdded_content");
		}
	}
}

出力結果
onAdded_container
onAdded_content
onAdded_content

なぜか、onAdded_contentが2度呼ばれます。
2007年を締めくくるクエスチョンです。
どなたか!

トラックバックURL

http://faces2.bascule.co.jp/mt/mt-tb.cgi/550

コメント一覧

あけましておめでとうございます。   A. DisplayObjectContainerにstageが渡された(=ステージに追加された)ときの動作   A-1. Event.ADDED_TO_STAGEを発行   A-2. 全てのchildにstageを渡す(childはEvent.ADDED_TO_STAGEを発行)   B. DisplayObjectContainer.addChild(child)の動作   B-1. childにstageを渡す(childはEvent.ADDED_TO_STAGEを発行)   こうなってるんじゃないでしょうか。 A-1 B-1 A-2の順に通って2回発行されてるのでは。

コメントを投稿

(コメントには承認が必要になることがあります。承認されるまではコメントは表示されません。)