海
我想在继承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 );
没有痕迹..
答案 0 :(得分:1)
Sprite实现IEventDispatcher,以便编码器 - 你 - 可以从显示列表类调度自定义事件。但是,如您所怀疑的那样,本机Flash Player事件不会通过dispatchEvent方法本身调度,而是在内部创建并传递给事件侦听器。我想这是一个主要原因是表现。
答案 1 :(得分:0)
迟早你需要将事件传递给真正的sprite eventDispatcher,否则它将无效(提示:super.dispatchEvent(event))
顺便说一下,它只适用于子类本类的对象,其他的将继续子类化Sprite,因此使用Sprite方法。