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

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

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

Регистрация: Mar 2013
Сообщений: 290
По умолчанию MovieClip: единый addEventListener

(Можно даже сказать: Единый Слушатель Событий Ада), лол.

Ок, всем привет.

Есть мувиклип Area1, в котором находятся три других мувиклипа: Krug1, Krug2, Krug3.
Все они залинкованы к одноименным классам через галочку Export to ActionScript.

Изначально стэйдж пустой. Класс Main заполняет его вот так:

Нажмите на изображение для увеличения
Название: snap4940.jpg
Просмотров: 180
Размер:	68.5 Кб
ID:	29909

Нужно, чтобы по клику мыши определялось какой кружок был нажат, и шло соответвующее действие.
Конешно, это можно сделать повесив на каждый кружок свой слушатель, но так не интересно.

Можно ли повесить только один слушатель на объект Area1, чтобы он, через родительские ссылки определял, какой кружок был нажат?

Я попытался сделать так:

Основной класс:
Код AS3:
package
{
 
	import flash.display.Sprite;
 
	public class Main extends Sprite
	{
		private var area1:Area1;
		private var eventHandler:EventHandler;
 
		public function Main()
		{
			area1 = new Area1();
			area1.x = 120;
			area1.y = 150;
			addChild(area1);
 
			eventHandler = new EventHandler(area1);
 
		}
	}
 
}
Класс EventHandler:

Код AS3:
package
{
	import flash.display.MovieClip;
	import flash.events.*;
 
	public class EventHandler extends EventDispatcher
	{
 
		public function EventHandler(mc:MovieClip)
		{
			mc.addEventListener(MouseEvent.CLICK, clickHandler);
		}
 
		private function clickHandler(e:Event)
		{
 
//			if (e.currentTarget. ???)
//			{
//				trace("Krug1");
//			}
//			else if (e.currentTarget. ???)
//			{
//				trace("Krug2");
//			}
//			else if (e.currentTarget. ???)
//			{
//				trace("Krug3");
//			}
 
 
 
		}
 
 
 
	}
 
 
}
Вот там где камменты, надо как-то условие задать, чтобы определялся кружок.

Но как это сделать?
Вроде бы нужно как-то e.currentTarget. использовать, но не понимаю как именно.

Некоторое соображение:
Изначально, у объектов на стэйдж нет <Instance names>.
Подозреваю что если бы они были, то было бы проще.
Тогда наверное прокатило бы что-то вроде:
Код AS3:
e.currentTarget.Area1_Instancename.Krug1_instancename
Но хотелось бы решить задачу без привязки к <Imstance name>, если это возможно конешно.

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

Теги
addeventlistener , movieclip , единый слушатель

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

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


 


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


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