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

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

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

Регистрация: Mar 2013
Сообщений: 10
По умолчанию Автоматическое добавление слушателей на кнопки

Добрый день.
Проблема заключается в следующем, есть n-ое кол-во кнопок b1, b2, b3..., каждая кнопка должна выполнять определенную функцию fn1, fn2, fn3..., Как сделать что бы на кнопку автоматически вешалась функция. Например на b1 fn1, на b2 fn2 и т.д.

Старый 17.04.2013, 20:52
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
// Это контейнер с кнопками
// где-нибудь на стадии инициализации
super.addEventListener(Event.ADDED, this.handler_added);
super.addEventListener(Event.REMOVED, this.handler_removed);
 
private function handler_added(event:Event):void {
    const target:DisplayObject = event.target;
 
    if (target.parent === this && target is Button /* или какой-нибудь другой признак, если в контейнере не только кнопки*/) {
        const name:String = target.name; // as 'b1'
        const handler:Function = this[name] as Function; // as this.b1
        if ( handler ) {
            target.addEvenListener(MouseEvent.CLICK, handler);
        }
    }
}
 
private function handler_removed(event:Event):void {
    const target:DisplayObject = event.target;
    if (target.parent === this && target is Button) {
        const name:String = target.name; // as 'b1'
        const handler:Function = this[name] as Function; // as this.b1
        if ( handler ) {
            target.removeEvenListener(MouseEvent.CLICK, handler);
        }
    }
}
 
private function b1(event:MouseEvent):void {
    trace(event);
}
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
dimarik, а в чем смысл строгого равенства в этом случае?

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
сложно сказать. я вообще строгий.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Mar 2013
Сообщений: 10
Спасибо большое, буду пробовать.

Старый 18.04.2013, 10:08
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 6  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Такой код не очень сочетается с паттерном MVC, если конечно сам контроллер не является контейнером

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Агрегатирование. Агрегирование. Думаю что нет смысла комментировать.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 18.04.2013, 12:58
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 8  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
А я думаю, что имеет. Смысл агрегатирования в сборке. В Drupal переводится как агрегатирование. В Drupal используется очень правильная концепция сущностей - entities. Что там плохо это использование ассоциативных массивов вместо XML.

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

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

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


 


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


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