0

プロジェクトを開始したい。しかし、事務処理をしているうちに、次のような状況に気づきました。

たとえば、3 つのクラスがあるとします。

  1. メインとして、
  2. A.as、
  3. 基礎

ここで、「Main.as」は、A と B のインスタンスを作成する中心的なクラスです。

クラスAには、ENTER_FRAMEイベントで「updatePosition(e:Event)」という関数があります。

クラス B は、「Main.as」を介してクラス A からこの「updatePosition(e:Event)」から更新を取得する必要があります。

これは、1 つの ENTER_FRAME イベントと A.as クラスのみでどのように達成できますか?

4

2 に答える 2

2

これを行う簡単な方法の 1 つを次に示しますが、もっと良い方法がたくさんあると確信しています (カスタム イベントや AS3 シグナル ライブラリを使用するなど)。

Main.as

private function eFrame(e:Event) 
{
    a.runEvents();
    b.runEvents();
}

A.as. 基礎

public function runEvents()
{
   // Run whatever events you need to run
}

これにより、3 つの ENTER_FRAME イベントと同じ効果が得られますが、オーバーヘッドはありませんが、多くの関数呼び出しによるオーバーヘッドが発生します。

于 2012-07-26T13:30:47.057 に答える
0

単一の ENTER_FRAME ハンドラを main.as に配置して、そこから他のクラスの更新を呼び出してみませんか?

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

}
于 2012-07-26T13:28:07.460 に答える