使用来自一个类的ENTER_FRAME事件访问函数,并将更新发送到AS3中的其他类

时间:2012-07-26 12:48:22

标签: actionscript-3 air enterframeevent

我想开始一个项目。但是,在做文书工作时,我意识到如下情况,

说,我们有3个班级。

  1. Main.as,
  2. A.as,
  3. B.as
  4. 这里,“Main.as”是一个创建A和B实例的中心类。

    A类有一些函数说“updatePosition(e:Event)”和ENTER_FRAME事件。

    B类需要通过“Main.as”从A类的“updatePosition(e:Event)”获得更新

    如何仅使用一个ENTER_FRAME事件和仅在A.as类中的事件来实现这一目标?

2 个答案:

答案 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();
    }

}