Показать сообщение отдельно
Старый 19.11.2015, 15:47
ObOs вне форума Посмотреть профиль Отправить личное сообщение для ObOs Найти все сообщения от ObOs
  № 4  
Ответить с цитированием
ObOs
 
Аватар для ObOs

Регистрация: Jul 2009
Сообщений: 149
1)Создавать дополнительный EventDispatcher нет необходимости. EventDispatcher входит в цепочку наследования Sprite(caseyryan вам даже скриншот выложил). Т.е., если ваш герой унаследован от Sprite, он сам может спокойно рассылать события
Код AS3:
hero.dispathEvent(new Event("gameOver"));
2)Почему не работает у вас. Вы рассылаете событие одним экземпляром GameOverEvent, а слушаете(ждете) это событие от другого экземпляра. У вас сейчас что то типа этого:
Код AS3:
		var eventName:String = "someEvent";
 
		var dispatcherA:EventDispatcher = new EventDispatcher();
		var dispatcherB:EventDispatcher = new EventDispatcher();
 
		dispatcherA.addEventListener(eventName, eventHandlerA);
		dispatcherB.addEventListener(eventName, eventHandlerB);
 
		dispatcherA.dispatchEvent(new Event(eventName));
 
 
		private function eventHandlerA(e:Event):void 
		{
			trace("dispatherA");//Этот трейс выполнится
		}
 
		private function eventHandlerB(e:Event):void 
		{
			trace("dispatherB");//А этот не выполнится пока dispatcherB не "плюнет" событие
		}
3)И во тут
Код AS3:
		public function Compozition(gameOverEvent){
			gameOverEvent = new GameOverEvent();
вы присваиваете переменной переданной в конструктор Compozition новый экземпляр GameOverEvent, т.е. вот тут, по идее, должна выскочить ошибка, т.к. gameOverEvent там будет null
Код AS3:
		private function endListener(e:TimerEvent):void{
			if(timer.currentCount == 10){
				gameOverEvent.gameOverListener();
				//Вот тут ошибка т.к. gameOverEvent==null
			}
		}