1

矢印キーを使用してボードの周りのムービークリップを制御でき、同時に小さなキャラクターが歩き回る小さなゲームを作成しようとしています。

ボード上を移動できるユーザー制御のキャラクターを常に更新する enterframe のイベント リスナーがあります。私が本当に望んでいるのは、歩き回るキャラクターに割り当てる AI クラスを作成する機能です。この AI クラスは、最初に AI ムービークリップ インスタンスをステージに作成/追加するためのコード以外の追加コードを追加することなく、それらの動きを担当します。

これまでのところ、すべての文字クラスを基本クラスとして拡張する AI クラスがあります。AIクラスがすべてのAIの動きを処理できるように、このAIクラスに別のenterframeイベントリスナーを追加する方法はありますか? 私は間違った方向に進んでいますか?

ありがとう!

マイク

4

1 に答える 1

4

良い方向と言えよう。AI クラスで addedToStage リスナーを作成し、そのハンドラーで protected または public の ENTER_FRAME ハンドラーを作成すると、異なる文字タイプのニーズがわずかに異なる場合は、その動作の一部をオーバーライドできます。

public class CharacterBase extends Sprite {

    public function CharacterBase():void {
        this.addEventListener(Event.ADDED_TO_STAGE,addedToStage,false,0,true);
        this.removeEventListener(Event.REMOVED_FROM_STAGE,removedFromStage,false,0,true);
    }

    private function addedToStage(e:Event):void {
        this.addEventListener(Event.ENTER_FRAME,enterFrameHandler, false,0,true);
    }

    private function removedFromStage(e:Event):void {
        this.removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
    }

    protected function enterFrameHandler(e:Event):void {
        //do your AI moving around logic
        walk();
    }

    protected function walk():void {
        this.x += 2;  //the default walk behavior
    }
}

デフォルトの動きをオーバーライドするキャラクター:

public class Character1 extends CharacterBase {
    public function Character1():void {
        super();
    }

    override protected function walk():void {
        this.x += 5; //this character needs to be faster than default
    }
}
于 2012-08-31T23:11:21.843 に答える