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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.02.2011, 18:32
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 1  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
По умолчанию Куда девается настоящее имя мувиклипа при попытке прочтения его в обработчике

На мувиклип, который уже на таймлайне с заданным именем ("mc1") вешаю листенер:
Код AS3:
mc1.addEventListener(MouseEvent.CLICK, click);
Потом хочу получить его имя в обработчике:
Код AS3:
private function click(e:MouseEvent) {
    trace(e.target.name); //выводит instance+рандомное число
}
Почему не выводит настоящее имя? Что интересно в обработчике ROLL_OVER - выдаёт нормальное имя - "mc1"
А в CLICK - instance + рандомное число. У меня много таких мувиков на сцене mc1, mc2, mc3, mc4 и на всех их я вешаю листенер и в качестве обработчика одну функцию - click. Чтобы как-то определять какая кнопка была нажата внутри этой функции я хотел switch-ом проверять e.target.name. Но настоящее имя куда-то девается. В чём может быть проблема?

Старый 07.02.2011, 18:33
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Это не имя, а название переменной, что ссылается на клип.
Если очень хочется (что не есть логично), то можно вычленить из "mc1" цифру и воткнуть ее в то же свойство name, к примеру. Или целиком поместить туда имя.
__________________
тут я

Старый 07.02.2011, 18:37
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 3  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Блин а почему он обрабатывает имя переменной, а не имя того на что она ссылается?

Добавлено через 1 минуту
Ну как мне быть в такой ситуации? Не для каждого же мувика писать свой обработчик ?

Старый 07.02.2011, 18:39
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 4  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Не скажу - не знаю.
__________________
тут я

Старый 07.02.2011, 18:44
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 5  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
FlashWizard, а вешаете слушатели вы наверно следующим образом:
Код AS3:
mc1.addEventListener(MouseEvent.CLICK, click);
mc2.addEventListener(MouseEvent.CLICK, click);
mc3.addEventListener(MouseEvent.CLICK, click);
//сто тыщ строк кода
mc3651612.addEventListener(MouseEvent.CLICK, click);
Да?

В массив все складыйте, а в обработчике ищите в этом массиве e.currentTarget

Старый 07.02.2011, 18:45
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 6  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Такая в роде на первый взгляд лёгкая задача, а не получается обработать несколько мувиков одной функцией.

Старый 07.02.2011, 18:50
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 7  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
for (var i:int = 1; i < 100500; i++) {
    var clip:MovieClip = getChildByName("mc" + i) as MovieClip;
    vectorClips.push(clip);
    clip.addEventListener(MouseEvent.CLICK, click);
}
Хотя по-хорошему надо надо вешать на контейнер один обработчик.
__________________
тут я

Старый 07.02.2011, 18:51
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 8  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Цитата:
e.currentTarget
Во точно )) Спасибо. Это помогло. Через e.currentTarget.name получилось.

Цитата:
FlashWizard, а вешаете слушатели вы наверно следующим образом:
Да нет конечно, все мувики сначала в массив загнал, потом циклом листенеры повесил.

Ну в общем спасибо, Bgg.

Старый 08.02.2011, 13:10
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 9  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
FlashWizard, скорее всего событие приходит не от самого мувика, а всплывает из его вложенного элемента, и instance name соответственно приходит его же. Это подтверждается тем, что при обращении к currentTarget вы получаете искомое имя.
__________________
тонкий тролль, осеянный благодатью

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

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

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


 


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


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