1

我正在尝试创建一个小游戏,您可以在其中使用箭头键控制棋盘周围的电影剪辑,同时还有小角色四处走动。

我有一个用于 enterframe 的事件监听器,它不断更新可以在棋盘上移动的用户控制角色。我真正希望的是能够创建一个 AI 类来分配给四处走动的角色。这个 AI 类将负责它们的移动,而无需我添加额外的代码,而不是最初创建/添加 AI 影片剪辑实例到舞台的代码。

到目前为止,我有一个 AI 类,所有字符类都扩展为它们的基类。有没有办法在这个 AI 类中添加另一个 enterframe 事件侦听器,以便 AI 类可以处理所有 AI 运动?我走错方向了吗?

谢谢!

麦克风

4

1 回答 1

4

我会说这是一个很好的方向。在您的 AI 类中,创建一个 addedToStage 侦听器,并在该处理程序中创建一个受保护或公共的 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 回答