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

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

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
По умолчанию 1 обработчик на все кнопки - странное поведение

Жили были 50 красных кнопок. У каждой кнопки name = b1, b2...b50
На каждую из них вешается свой addEventListener(MouseEvent.CLICK, redButton)
Но все они имеют 1 обработчик:

Код AS3:
function redButton(e:MouseEvent):void{
	trace(e.target.parent.name);
}
И всё бы было отлично, но есть один касяк - моя красная кнопка состоит из различных частей (текстового поля, фона, бордюров) некоторые из которых вложены друг в друга:

Код:
кнопка --> фон --> бардюр
     |
      ---> текстовое поле
И когда клик приходиться на фон или текстовое поле, возвращается name кнопки b1, b2 и т.п. Но если клик попадает на бардюр, возвращаеться name фона. Меня такое дело совсем не устраивает.
Мне нужно получить name у кнопка, а не того кишка кнопки, на который пришелся клик.

Вообщем суть в том что нужно сделать 1 адекватный обработчик для всех кнопок.
__________________
Дети не должны знать о своих родителях

Старый 04.01.2012, 13:14
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 2  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Никогда не создавайте отдельные обработчики событий для компонентов. Для всех кнопок в проекте создайте один обработчик и заполните его гроздьями if...else чтобы выяснить, какая кнопка была нажата. http://www.nestor.minsk.by/sr/2006/02/sr60201.html
Попробуйте вместо e.target использовать e.currentTarget

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

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
а отключить мышь у детей кнопки нельзя?
__________________
местонахождение

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
expl
currentTarget работает, спасибо.

А насчёт:
Цитата:
Для всех кнопок в проекте создайте один обработчик и заполните его гроздьями if...else чтобы выяснить, какая кнопка была нажата.
У меня немножко другой случай
__________________
Дети не должны знать о своих родителях

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

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

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


 


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


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