Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 18.11.2013, 21:12
zCHESNOKz вне форума Посмотреть профиль Отправить личное сообщение для zCHESNOKz Посетить домашнюю страницу zCHESNOKz Найти все сообщения от zCHESNOKz
  № 1  
Ответить с цитированием
zCHESNOKz
 
Аватар для zCHESNOKz

Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
По умолчанию Как объяснить двойное срабатывание события (MouseEvent) ?

Есть главный класс, который отвечает за добавление и удаление дополнительных классов, таких как класс реализацией процесса игры, и класс с выбором уровней. Все просто, но есть одна проблема.

В выборе уровня кликаю по символу (в котором же присобачен слушатель MouseEvent.MOUSE_CLICK, потом этот символ диспатчит событие "CLICK_ME") а в классе выбора уровня его слушатель, который удаляет класс с выбором уровня и добавляет класс с самой игрой , после нажатия и перехода на класс с игрой , слушатели нажатия клавиш перестают отвечать, для этого нужно кликнуть по экрану , в итоге флэха отвечает на нажатия клавиш и все работает хорошо, перейдя в выбор уровней, а потом в игру, снова нужно кликнуть по экрану.

Почему так происходит? В чем проблема? При этом если в символе событие MouseEvent.MOUSE_WHEEL, то в игре также нужно поводить мышкой чтобы заработало.

НО если я при переходе в саму игру НЕ УДАЛЯЮ класс с выбором уровней, то все работает нормально. Почему, что меняется в этот раз меняется ? Не удаляются обработчик события клика?

Я уже думал, что это из-за параметра события useCapture , но нет.

Примеры:

Класс с выбором уровня:


Код AS3:
 public function addListener():void
		{
			this.icon.buttom.addEventListener(MouseEvent.MOUSE_DOWN, onClick);
		}
 
		public function onClick(event:MouseEvent):void
		{
			this.dispatchEvent( new Event("CLICK_ICON"));
		}
Главный класс, который отвечает за переход:

Код AS3:
public function Model(_stage:Stage)
		{
			this._stage = _stage;
			addMenu();
		}
 
		public function addMenu():void
		{
			menu = new GameMenu(_stage);
			this.addChild(menu);
 
			menu.addListener();
			menu.addEventListener("CLICK_ICON", onClickIcon);
		}
 
		public function delMenu():void
		{
			removeChild(menu);
		}
 
		public function onClickIcon(event:Event):void
		{
			this.removeEventListener("CLICK_ICON", onClickIcon);
			trace ("onClickIcon");
			menu.addListener();
			delMenu();
			addCTR();
		}
 
		public function addCTR():void
		{
			ctr  = new ControllerForLevels(_stage);
			addChild(ctr);
			ctr.addlevel_1();
			ctr.addEventListener("END_LEVEL", onEndLevel);
		}
 
		public function onEndLevel(event:Event):void
		{
			delCTR();
 
			addMenu();
			this.addChild(menu);
		}
 
		public function delCTR():void
		{
			removeChild(ctr);
			ctr.removeEventListener("END_LEVEL", onEndLevel);
		}

Как быть?

Заранее спасибо!

Добавлено через 2 часа 36 минут
Может кто сталкивался, подскажите, что не так

Создать новую тему   Часовой пояс GMT +4, время: 00:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:13.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.