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

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

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

Регистрация: Feb 2008
Сообщений: 71
По умолчанию Не срабатывает цикл.

Здравствуйте. Почемуто в конструкторе не срабатывает задание слушателя.
Код AS3:
for(var i:Number = 0; i < all.wines.numChildren; i++) {
    all.wines.getChildAt(i).name.addEventListener(MouseEvent.MOUSE_DOWN, open_big_wine);
    trace(all.wines.getChildAt(i).name);
}
А если пишу:
Код AS1/AS2:
all.wines.wine_1.addEventListener(MouseEvent.CLICK, open_big_wine);
all.wines.wine_2.addEventListener(MouseEvent.CLICK, open_big_wine);
all.wines.wine_3.addEventListener(MouseEvent.CLICK, open_big_wine);
Все ок. Но это решение не такое "красивое".
В чем проблема, подскажите пожалуйста.

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

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
а зачем вы имени прописываете слушатель?
__________________
low +

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Код:
all.wines.getChildAt(i).addEventListener(MouseEvent.MOUSE_DOWN, open_big_wine);
Только что-то мне не кажется, что это решение красивое.

UPD: опередили

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

Регистрация: Feb 2008
Сообщений: 71
Спасибо. Помогло.

mikhailk Подскажите пожалуйста красивое решение новичку. Буду благодарен.

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Честно говоря, я слабо себе представляю, что именно происходит в коде.
Например, откуда взялись потомки у all.wines. Я подозреваю, что это картотека вин, она как формируется, динамически? Если динамически - разумно слушателей (на мой взгляд) приписывать по мере создания объектов. Тогда этот цикл вообще не нужен.

Кстати, мелочь конечно, но лучше бы i сделать int.

Старый 13.09.2010, 19:05
alexes вне форума Посмотреть профиль Отправить личное сообщение для alexes Найти все сообщения от alexes
  № 6  
Ответить с цитированием
alexes

Регистрация: Feb 2008
Сообщений: 71
mikhailk Спасибо за совет.

В моем случае это мувики со сцены прямо. Спасибо за помощь еще раз.

Старый 13.09.2010, 19:10
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 7  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
разумно вешать слушатель вообще только один к all.wines.
А не перебирать всех его детей и им приписывать один и тот же слушатель. Потом же еще отписываться придется. Вот гемора то себе создаете.
Нерационально называется.

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
ну, где вешать и что слушать - кому как удобнее

Я бы в общем виде делал так:
1. Завел бы класс Bottle, который знает все о бутылке
2. Слушатель на мышь вешал бы внутри этого класса и там же от него при необходимости отписывался (если предполагается, что объекты этого класса убираются со сцены)
3. Внутри самого класса Bottle при срабатывании слушателя мыша диспатчил бы наверх событие Bottle.SELECTED, в котором передавал бы всю информацию о бутылке, которую необходимо показывать, это событие бы отлавливал уже на уровне контейнера бутылок, напр. BottleContainer.

Старый 13.09.2010, 19:29
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 9  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
ну, где вешать и что слушать - кому как удобнее
Да че, бывает и гланды удалять через задний проход тоже кому-то удобнее...

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Не знаю, мне мой вариант больше нравится

Если отлавливать в контейнере бутылок просто клики мыша по бутылкам, все, что будет - это имя таргетной бутылки, которое еще надо обработать и достать данные по бутылке. Тут на форуме полно вопросов "как мне передать параметр в слушатель?" - это следствие как раз этого подхода.

В моем варианте - по клику мыша по бутылке в контейнер приходит сразу событие с данными. Тихо и красиво.

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

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

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


 


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


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