Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Новое событие (http://www.flasher.ru/forum/showthread.php?t=130967)

StarDrake 09.10.2009 17:47

Новое событие
 
В классе генерирую новое событие и мне его надо прослушивать вне этого класса
Код AS3:

        public class stepper extends EventDispatcher{
....
                public static var ACTION:String = "action";
....
                                dispatchEvent(new Event(stepper.ACTION));

потом создаю несколько объектов этого класса
Код AS3:

var A: stepper = new stepper;
var В: stepper = new stepper;

прослушивать их получается только таким образом
Код AS3:

A.addEventListener(stepper.ACTION, onElementSelect);
B.addEventListener(stepper.ACTION, onElementSelect);

Вопрос - как добавить слушателя чтобы слушал сразу все объекты этого класса без перечисления их?

cleptoman 09.10.2009 18:07

вешать на стейдж и диспатчить с баблингом

StarDrake 09.10.2009 18:08

Распишите плиз нюбу

cleptoman 09.10.2009 18:17

думаю хелп поможет, потому что контекста вашего вещания я не уловил..
Код AS3:

dispatchEvent(new Event(stepper.ACTION,true));

Код AS3:

stage.addEventListener(stepper.ACTION, onElementSelect);// stage не обязательно. это может быть Документ класс


elfon 11.10.2009 00:19

Я вот до конца не понял зачем с bubbles делать событие.
Или это для универсальности, чтобы его можно было при случае и на фазе всплытия слушать?

Anton Riot 11.10.2009 02:17

Там где "dispatchEvent", можно передавать по static функционалу что надо куда надо..

dimarik 11.10.2009 13:26

Код AS3:

public class Stepper extends EventDispatcher {
 
        private static const _dispatchers:Object = new Object();
 
        public static function addEventListener(type:String, method:Function):void {
                for each (var dispatcher:IEventDispatcher in _dispatchers) {
                        dispatcher.addEventListener(type, method);
                }
        }
 
        // Constructor
        public function Stepper() {
                _dispatchers[Math.random()] = this;
        }
 
}
 
 
var stepperOne:Stepper = new Stepper();
var stepperTwo:Stepper = new Stepper();
var stepperThree:Stepper = new Stepper();
 
Stepper.addEventListener(StepperEvent.ACTION, this.onElementSelect);


SamFR 11.10.2009 18:07

Elfon, с бабблингом делать событие полезно в том случае, когда без явной подписки нужно слушать произвольное количество объектов, находящихся ниже по иерархии вложенности. Но это возможно только в том случае, если все объекты добавлены на дисплей-лист (и, соответственно, наследуют DisplayObject).
И желательно не забывать останавливать дальнейшее распространение события (Event.stopPropagation()) на последнем из уровней, использующих событие.


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

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