Переопределение flash.display.Sprite's eventDispatcher - PullRequest
0 голосов
/ 27 февраля 2010

Hai,

Я хочу переопределить метод dispatchEvent при наследовании от flash.display.Sprite. Всякий раз, когда событие отправляется сейчас, как ADDED_TO_STAGE и CLICK, оно проходит через dispatchEvent в моей теории. Однако нет единого следа, который он получит через dispatchEvent .. поэтому события отправляются изнутри откуда-то еще?

    public class TestSprite extends Sprite
    {

        public function TestSprite() 
        {
            this.addEventListener(Event.ADDED_TO_STAGE, this.handleAddedToStage);
        }

        private function handleAddedToStage(event:Event):void
        {

        }

        override public function dispatchEvent(event:Event):Boolean
        {
            trace(event.type);

            return super.dispatchEvent(event);
        }

    }
            this._sprite = new TestSprite();
            this._sprite.graphics.beginFill(0x000000);
            this._sprite.graphics.drawRect(20, 20, 200, 200);
            this._sprite.graphics.endFill();

                        this.addChild( this._sprite );

Там нет никаких следов ..

Ответы [ 2 ]

1 голос
/ 28 февраля 2010

Sprite реализует IEventDispatcher, так что кодер - вы - можете отправлять пользовательские события из классов списка отображения. Как вы и подозревали, собственные события Flash Player не отправляются через сам метод dispatchEvent, они создаются и передаются слушателям событий внутри. Я думаю, что основной причиной этого является производительность.

0 голосов
/ 27 февраля 2010

рано или поздно в функции вам нужно передать событие реальному спрайту eventDispatcher, иначе оно не будет работать (подсказка: super.dispatchEvent (event))

кстати, это будет работать только на объектах, которые подклассы вашего собственного класса, остальные будут продолжать подкласс Sprite, следовательно, использовать метод Sprite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...