0
我使用AS3与FlashDevelop中AS3添加enterFrame事件侦听器添加到雪碧子
CustomClassA extends Sprite
CustomClassB extends CustomClassA
还需要执行一些代码的每一帧
是否有任何其他方式做到这一点,除了让CustomClassA
扩展MovieClip
而不是Sprite
?
我使用AS3与FlashDevelop中AS3添加enterFrame事件侦听器添加到雪碧子
CustomClassA extends Sprite
CustomClassB extends CustomClassA
还需要执行一些代码的每一帧
是否有任何其他方式做到这一点,除了让CustomClassA
扩展MovieClip
而不是Sprite
?
我会尝试创建一个简单的例子,使用虚拟概念,只是为了解释如何做到这一点。你可以尝试这样的:
public class CustomClassA extends Sprite
{
public function CustomClassA()
{
this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler, false, 0, true);
}
private function addedToStageHandler(event:Event):void
{
this.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
//start your code here...
}
public function startEnterFrame():void
{
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
}
public function stopEnterFrame():void
{
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function enterFrameHandler(event:Event):void
{
executeSomeCodeEveryFrameMethod();
}
public function executeSomeCodeEveryFrameMethod():void
{
//your enter frame code...
}
public function dispose():void
{
stopEnterFrame();
//garbage collection...
}
}
,然后创建CustomClassB:
public class CustomClassB extends CustomClassA
{
public function CustomClassB()
{
}
override public function executeSomeCodeEveryFrameMethod():void
{
//custom executeSomeCodeEveryFrameMethod
}
}
您可以测试使用:
var customClassB:CustomClassB = new CustomClassB();
customClassB.startEnterFrame();
添加监听器的阶段,而不是你的对象.. – Cherniv