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

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

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

Регистрация: Nov 2010
Сообщений: 13
По умолчанию Как узнать добавлен ли слушатель на определенное событие?

Добавляю слушателя так stage.addEventListener(MouseEvent.MOUSE_MOVE, onMM);
Как узнать запускалось это уже или нет? Спасибо за ответ

Старый 01.12.2010, 12:09
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Цитата:
Как узнать добавлен ли слушатель на определенное событие?
Функция hasEventListener().

Старый 01.12.2010, 12:11
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 3  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
hasEventListener().
никак не поможет узнать доставлялось событие или нет.

Для этого достаточно сделать какую-то переменную, допустим:
Код AS3:
private var _eventTriggered:Boolean = false;
А в обработчике события поменять ее на true;

Старый 01.12.2010, 12:19
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 4  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
ElenaS, пожалуйста, уточните, что вы имели в виду говоря "Как узнать запускалось это уже или нет?". Был ли добавлен слушатель события, или вызывался ли уже этот слушатель?

Старый 01.12.2010, 14:15
ElenaS вне форума Посмотреть профиль Отправить личное сообщение для ElenaS Найти все сообщения от ElenaS
  № 5  
Ответить с цитированием
ElenaS

Регистрация: Nov 2010
Сообщений: 13
Мне было интересно узнать "Был ли добавлен слушатель". Я сделала булевскую переменную. А что будет если я несколько раз запущу stage.addEventListener(MouseEvent.MOUSE_MOVE, onMM);. onMM будет несколько раз срабатывать или 1?

Старый 01.12.2010, 14:18
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 6  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
Мне было интересно узнать "Был ли добавлен слушатель"
Тогда как сказал bav

Код AS3:
if ( !stage.hasEventListener(MouseEvent.MOUSE_MOVE)
      stage.addEventListener(MouseEvent.MOUSE_MOVE, onMM);
Цитата:
onMM будет несколько раз срабатывать или 1?
Он будет срабатывать сколько угодно раз. Разница лишь в том, что сам слушатель не будет повторно добавляться, если он уже добавлен

Старый 01.12.2010, 14:21
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 7  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Если вы несколько раз напишите
Код AS3:
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMM);
то при возникновении события MouseEvent.MOUSE_MOVE, функция onMM() будет вызываться единожды. Это недолго проверить:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite
	{
		public function Main()
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(event:Event = null):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onMM);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onMM);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onMM);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onMM);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onMM_2);
		}
 
		private function onMM(event:MouseEvent):void
		{
			trace("some");
		}
		private function onMM_2(event:MouseEvent):void
		{
			trace("some_another");
		}
	}
}
// output:
// some
// some_another


Последний раз редактировалось bav; 01.12.2010 в 14:27.
Старый 01.12.2010, 14:59
ElenaS вне форума Посмотреть профиль Отправить личное сообщение для ElenaS Найти все сообщения от ElenaS
  № 8  
Ответить с цитированием
ElenaS

Регистрация: Nov 2010
Сообщений: 13
Спасибо!!!!

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

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

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


 


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


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