Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как иницализировать свойство target или currentTarget у Event? (http://www.flasher.ru/forum/showthread.php?t=156217)

il phoenix 18.05.2011 12:09

Как иницализировать свойство target или currentTarget у Event?
 
генерю событие в контроле
Код AS3:

private function onSelect_Click(e:Event):void 
{
        dispatchEvent(new Event(Event.SELECT));
}

не могу понять как присвоить свойствам target или currentTarget ссылку на текущий контрол, чтобы передать слушателю события, прошу прощения если тема поднималась, но найти не смог

alatar 18.05.2011 12:32

Никак. Они инициализируются автоматически.

gloomyBrain 18.05.2011 12:47

Код AS3:

package  {
 
        import flash.events.Event;
 
        /**
        *
        *
        * @author gloomyBrain
        */

        public class MyEvent extends Event {
 
                private var _myTarget:Object = null;
 
                public function MyEvent(type:String, customTarget:Object, bubbles:Boolean = false, cancelable:Boolean = false) {
 
                        super(type, bubbles, cancelable);
 
                        _myTarget = customTarget;
 
                }
 
                override public function get target():Object {
                        return _myTarget;
                }
 
                public override function clone():Event {
                        return new MyEvent(type, _myTarget, bubbles, cancelable);
                }
 
                public override function toString():String {
                        return formatToString("MyEvent", "type", "target", "bubbles", "cancelable", "eventPhase");
                }
 
        }
 
}

и потом где-то в коде:
Код AS3:

super.addEventListener("hello, stage!", onStageGreet);
super.dispatchEvent(new MyEvent("hello, stage!", super.stage));
 
...
 
private function onStageGreet(event:Event):void {
        trace(event.target == super.stage); // true
}


Psycho Tiger 18.05.2011 13:26

gloomyBrain, не всё так круто как кажется на самом деле. Из за того, что EventDispatcher дёргает clone тогда, когда установлен target в твоём примере в хэндлер долетает клон события MyEvent, а не то, что ты создал через new строчкой ниже подписки.

gloomyBrain 18.05.2011 14:05

Несмотря на это, я вроде ответил на вопрос автора.
Никто же не мешает переопределить currentTarget тем же макаром, или даже публичный доступ к нему прикрутить.

ЗЫ
О чем мы говорим? =) все равно проще добавить своих свойств своему событию

~~~ 18.05.2011 18:25

Цитата:

Сообщение от gloomyBrain (Сообщение 996898)

Событие "hello, stage!" - это жёстко, ух :)

Psycho Tiger 18.05.2011 19:18

Цитата:

Несмотря на это, я вроде ответил на вопрос автора.
Ага. Но я считаю нужным давая такой совет дополнить его описанием side-effects.
Цитата:

О чем мы говорим? =) все равно проще добавить своих свойств своему событию
Согласен. Но, вполне возможно, автор пишет свой Composite с bubbling`ом.

il phoenix 18.05.2011 19:52

понял, спасибо


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

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