|

- 帖子
- 54
- 积分
- 12
- 技术分
- 2
- 在线时间
- 31 小时
- 注册时间
- 2003-12-7
|
1#
发表于 2006-8-30 11:51
| 只看该作者
游戏的任务事件处理解决方案
在做游戏的时候,特别是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();
- }
-
复制代码 到这里就完成了。
以下是效果图:

[ 本帖最后由 flashqqx 于 2006-8-30 12:03 编辑 ] |
-
-
测试.swf (27.82 KB)
-
-
测试.fla (32 KB)
-
-
task.as (522 Bytes)
盘古教育软件 www.panguedu.com
----------------------------------------------------------
联系qq:13285235 |
|