Flash专栏: 基础教程 | 技巧运用 | MTV实例教程 | 游戏实例教程 | 实例教程 | AS教程(new)
photoshop专栏: 基础 | 进阶 | 技巧总汇 | 精彩实例 | 文字特效 | 滤镜魔术 | 实际应用
网页设计: Dreamweaver教程 | FireWorks教程 | CorelDraw设计 | Freehand/Illustrator教程 | 音乐转换教程
其他教程: 操作系统 | 程序设计 | 网站开发 | 图形图像 | 数据库 | 网络技术 | 安全相关 | 认证考试 | 硬件知识 | 服务器
Flash专栏>Flash基础教程>游戏的任务事件处理解决方案   返回上一页

  日期:2006-09-04 10 作者:flashqqx 来源:闪吧
天气预报 IP地址 手机号码 邮编 翻译 在线代理 在线评书 好dj


游戏的任务事件处理解决方案


在做游戏的时候,特别是rpg游戏,常常有很多任务,以下是我的游戏任务解决方案,提供出来大家分享:
第一步:首先写一个 任务的类 task.as

 
class task {
        //定义事件的名称,进度,描述
        var SjName, SjJd, SjMs;
        function task(N, J, M) {
                SjName = N;
                SjJd = J;
                SjMs = M;
        }
        //显示单个任务信息
        function SjInfo(a) {
                if (a == 1) {
                        return SjMs;
                }
                return SjName;
        }
        //完成任务
        function SjFinish() {
                if (SjJd==0) {
                        SjJd = 1;
                } else {
                        trace(SjName+"的任务,已经完成或者未触发");
                }
        }
        //触发任务
        function SjOpen() {
                if(SjJd==-1)
                {
                        SjJd = 0;}
                        else{
                                trace(SjName+"的任务,已经触发或者完成");
                                }               
        }
}
第二步:在task.as目录下面新建Flash 测试.fla
在第一帧里面声明 游戏的所有任务

//定义事件 (名称,进度,描述)
var Sj1:task = new task("帮助王大爷", -1, "到附近的铁牛山帮助王大爷看看他的外孙");
var Sj2:task = new task("帮助千秋学找媳妇", -1, "到重庆去找帮千秋学媳妇");
var Sj3:task = new task("帮助李大爷", -1, "送信给隔壁村子的张阿姨");
var Sj4:task = new task("帮助赵员外", 1, "到附近的丹霞岭帮助赵员外采集草药");
var Sj5:task = new task("帮助李铁匠", 0, "李铁匠的女儿被山贼给掳走了,在黑风洞里面区找线索");
var Alltask = new Array(Sj1, Sj2, Sj3, Sj4, Sj5);
//显示事件列表
function ShowShijian() {
        _root.Info = " <font color=\"#000000\">系 统 消 息</font> <br>========================<br>";
        for (var i:Number = 0; i<_root.Alltask.length; i++) {
                if (_root.Alltask[i].SjJd == 0) {
                        _root.Info += "<br>"+(i+1)+"、"+_root.Alltask[i].SjMs+"<font color=\"#FFF000\">[进行中]</font><br>----------------";
                }
                if (_root.Alltask[i].SjJd == 1) {
                        _root.Info += "<br>"+(i+1)+"、"+_root.Alltask[i].SjMs+"<font color=\"#FF0000\">[已完成]</font><br>----------------";
                }
                if (_root.Alltask[i].SjJd == -1) {
                        _root.Info += "<br>"+(i+1)+"、"+_root.Alltask[i].SjMs+"<font color=\"#999999\">[未触发]</font><br>----------------";
                }
        }
}
第三步:在第一帧上面放入以下元件
        1、画一个动态文本,属性设置如下:多行显示,允许html,变量为info
        2、拖入1个Flash的button组件 ,属性如下:参数label为:得到任务列表,加上以下AS

                on(click)
                {
                        _root.ShowShijian();
                        }
               
3、拖入1个Flash的button组件 ,属性如下:参数label为:激活事件1,加上以下AS

                on(click)
                        {
                                _root.Sj1.SjOpen();
                                _root.ShowShijian();
                        }
               
4、拖入1个Flash的button组件 ,属性如下:参数label为:激完成任务1,加上以下AS

                on(click)
                        {
                                _root.Sj1.SjFinish();
                                _root.ShowShijian();
                        }
               

到这里就完成了。

附件: 测试.swf (2006-8-30 12:01, 27.82 K)

附件: 测试.fla (2006-8-30 12:01, 32 K)
附件: task.as

   责任编辑:uufeng    时间:2006年9月1日


 
高手云集 版权所有 1998-2006