Показать сообщение отдельно
Старый 01.11.2010, 23:41
джонатан вне форума Посмотреть профиль Отправить личное сообщение для джонатан Найти все сообщения от джонатан
  № 1  
Ответить с цитированием
джонатан
 
Аватар для джонатан

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
По умолчанию Почему ADDED_TO_STAGE срабатывает дважды?

И кроме этого ещё срабатывает REMOVED_FROM_STAGE

FLA файл, Document class M.as:

1)
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.events.Event;
 
 
	public class M extends MovieClip {
 
 
		public function M() {
			this.addEventListener( Event.ADDED_TO_STAGE, init );
		}
 
		private function init( e:Event ):void {
			trace( "added" );
		}
 
 
	}
 
}
Выводит:

added
added

2)

Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.events.Event;
 
 
	public class M extends MovieClip {
 
 
		public function M() {
			this.addEventListener( Event.ADDED_TO_STAGE, init );
		}
 
		private function init( e:Event ):void {
			trace( "added" );
			this.removeEventListener( Event.ADDED_TO_STAGE, init );
			this.addEventListener(Event.REMOVED_FROM_STAGE, removed );
		}
 
		private function removed( e:Event ):void {
			trace( "removed" );
			this.removeEventListener( Event.REMOVED_FROM_STAGE, removed );
		}
 
	}
 
}
Выводит:

added
removed

Объясните пожалуйста, почему это происходит, и как этого избежать?
Всем спасибо.
__________________
Убейте меня!