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

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

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

Регистрация: Nov 2011
Сообщений: 41
Question Как узнать имя экземпляра MovieClip

Ребят, во Flash CS создал мувиклип Papa, внутри него находится еще штук пять мувиклипов, каждый из которых имеет своё имя экземпляра(son1,son2... son5).

Навешиваю на каждого "сына" слушатель на клик мышью.

Код AS3:
var mc:Papa = new Papa();
addChild(mc);
mc.son1.addEventListener(MouseEvent.CLICK, startProcess);
Код AS3:
private function startProcess(e:MouseEvent):void
{
}
Как внутри функции startProcess теперь узнать на какого конкретного сына был произведен клик?
getQualifiedClassName логично возвращает строку с movieclip, а мне нужна строка "son1".

Ох ну по name же.


Последний раз редактировалось Black Soviet; 04.04.2013 в 17:20.
Старый 04.04.2013, 17:15
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 2  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Имя экземпляра - это свойство mc.name. В вашем коде это так:
Код AS3:
private function startProcess(e:MouseEvent):void
{
  var mc:MovieClip = e.currentTarget as MovieClip;
  if (mc.name=="sun1") ...
}
Но вообще у вас корявый код получается. Если у вас все "сыны" в "папе", то логичней так:
Код AS3:
var mc:Papa = new Papa();
addChild(mc);
mc.addEventListener(MouseEvent.CLICK, startProcess); //один единственный слушатель на папе слушает всех детей
 
private function startProcess(e:MouseEvent):void
{
  var mc:MovieClip = e.target as MovieClip;
  switch (mc.name){
    case "sun1":
      //action
      break;
    case "sun2":
      //action
      break;
    ...      
  }
 
}
__________________
мой пустой блог

Старый 04.04.2013, 21:04
Black Soviet вне форума Посмотреть профиль Отправить личное сообщение для Black Soviet Найти все сообщения от Black Soviet
  № 3  
Ответить с цитированием
Black Soviet
 
Аватар для Black Soviet

Регистрация: Nov 2011
Сообщений: 41
iflamberg, у меня по вашему коду сыны в своём namе возвращают не "son1", "son2", а "instance23", "instance 25" и т.д.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Естественно. Имя переменной и свойство name дисплей объекта, не имеют ничего общего.
И вообще для решения этой задачи не нужно знать названия переменных, за которыми закреплены ссылки на объекты. Достаточно в обработчике юзать event.target или event.currentTarget

Старый 04.04.2013, 21:23
Black Soviet вне форума Посмотреть профиль Отправить личное сообщение для Black Soviet Найти все сообщения от Black Soviet
  № 5  
Ответить с цитированием
Black Soviet
 
Аватар для Black Soviet

Регистрация: Nov 2011
Сообщений: 41
caseyryan, я повесил слушателя не на каждого сына, а на mc (который является Papa). Кликая на любом сыне currentTarget возвращает объект Papa, target возвращает объект Son. Но e.target.name возвращает не "sоn1", а "instance23".

Добавлено через 8 минут
Ух, ребят, у меня день тяжёлый, в Sun лежал просто еще один movieclip, он все карты и путал.

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

Регистрация: Jan 2009
Сообщений: 1,651
Я так из знал, что надо подсказать, что, если у вас в детях есть вложенные мувики, то нужно для каждого sun сделать .mouseChildren = false;
__________________
мой пустой блог

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

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

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


 


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


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