我想开始一个项目。但是,在做文书工作时,我意识到如下情况,
说,我们有3个班级。
这里,“Main.as”是一个创建A和B实例的中心类。
A类有一些函数说“updatePosition(e:Event)”和ENTER_FRAME事件。
B类需要通过“Main.as”从A类的“updatePosition(e:Event)”获得更新
如何仅使用一个ENTER_FRAME事件和仅在A.as类中的事件来实现这一目标?
答案 0 :(得分:2)
这是一种简单的方法,但我确信有很多更好的方法(例如使用自定义事件或AS3信号库):
Main.as
private function eFrame(e:Event)
{
a.runEvents();
b.runEvents();
}
A.as。 B.as
public function runEvents()
{
// Run whatever events you need to run
}
这将为您提供与3个ENTER_FRAME事件相同的效果,但没有开销,但是您将从许多函数调用中获得开销。
答案 1 :(得分:0)
为什么不在main.as中放一个ENTER_FRAME处理程序并从那里调用其他类的更新?
public class Main extends Sprite
{
private var _a:A = new A();
private var _b:B = new B();
public function Main()
{
if(stage) init();
else addEventListener(Event.ADDED_TO_STAGE,init);
}
private function init(e:Event=null):void
{
removeEventListener(Event.ADDED_TO_STAGE,init);
stage.addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function onEnterFrame(e:Event):void
{
_a.updatePosition();
_b.updatePosition();
}
}