Flash 在AS3中可以使用addEventListener的最基本对象是什么?
我正在创建一个处理程序类,其内容类似于:Flash 在AS3中可以使用addEventListener的最基本对象是什么?,flash,actionscript-3,Flash,Actionscript 3,我正在创建一个处理程序类,其内容类似于: package avian.background { import flash.events.EventDispatcher; import flash.events.Event; import flash.utils.getTimer; import avian.objects.AvChild; import avian.background.AvManager; public class AvHand
package avian.background
{
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.utils.getTimer;
import avian.objects.AvChild;
import avian.background.AvManager;
public class AvHandler extends EventDispatcher
{
// vars
private var _last:uint = 0;
private var _time:uint = 0;
/**
* Constructor
*/
public function AvHandler()
{
addEventListener(Event.ENTER_FRAME, _handle);
_last = getTimer();
}
/**
* Called on dispatch of Event.ENTER_FRAME
*/
private function _handle(e:Event):void
{
_time = getTimer() - _last;
var i:AvChild;
for each(i in AvManager.getList("all"))
{
i.step(_time);
}
_last = getTimer();
}
}
}
我们的目标是让这个类扩展最基本的类,这个类仍然可以使用addEventListener()
——出于某种原因,如果要扩展Sprite或MovieClip,ENTER\u框架甚至永远不会启动——工作正常。我错误地认为EventDispatcher是最基本的
我最初将事件应用到我通过构造函数解析的阶段-这看起来很不整洁。触发事件的最简单类。ENTER\u FRAME是DisplayObjectDisplayObject是触发ENTER\u FRAME的最基本对象
谢谢mate-查看了一下。您是否可以确认您确实可以从DisplayObject扩展并实例化AvHandler类,而不会出现运行时错误?我不认为DisplayObject可以直接实例化,但我个人不知道在向下扩展一级后实例化是否安全(无需任何设置)。DisplayObject的本机代码中可能有某种程度的“抽象检测”,可以在AS3中复制为:if(Object)(this).constructor==YourAbstractClass){//ERROR!}