覆盖flash.display.Sprite的eventDispatcher

时间:2010-02-27 12:00:50

标签: actionscript-3 events actionscript

我想在继承flash.display.Sprite时覆盖dispatchEvent方法。每当像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 个答案:

答案 0 :(得分:1)

Sprite实现IEventDispatcher,以便编码器 - 你 - 可以从显示列表类调度自定义事件。但是,如您所怀疑的那样,本机Flash Player事件不会通过dispatchEvent方法本身调度,而是在内部创建并传递给事件侦听器。我想这是一个主要原因是表现。

答案 1 :(得分:0)

迟早你需要将事件传递给真正的sprite eventDispatcher,否则它将无效(提示:super.dispatchEvent(event))

顺便说一下,它只适用于子类本类的对象,其他的将继续子类化Sprite,因此使用Sprite方法。