首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AS3中编写一个简单的AI

在AS3中编写一个简单的AI
EN

Stack Overflow用户
提问于 2012-09-01 07:00:31
回答 1查看 1.1K关注 0票数 1

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

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

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

谢谢!

麦克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-01 07:11:22

我会说这是一个很好的方向。在AI类中,创建一个addedToStage侦听器,并在该处理程序中创建一个受保护或公开的ENTER_FRAME处理程序,然后,如果您对不同的字符类型有稍微不同的需求,则可以覆盖其部分行为。

代码语言:javascript
复制
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
    }
}

覆盖默认移动的字符:

代码语言:javascript
复制
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
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12223420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档