Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   1 обработчик на все кнопки - странное поведение (http://www.flasher.ru/forum/showthread.php?t=173484)

Tails 04.01.2012 13:05

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 адекватный обработчик для всех кнопок.

expl 04.01.2012 13:14

Цитата:

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

СлаваRa 04.01.2012 13:16

а отключить мышь у детей кнопки нельзя?

Tails 04.01.2012 13:22

expl
currentTarget работает, спасибо.

А насчёт:
Цитата:

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


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

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