文档介绍:本文由a568928220贡献
RPG游戏制作概念——对话
除夕夜竟然在写这个。。。
数组除了保存有规律的数据,还能利用数组,所我们想要做的事情简化。
数组可以保存任何AS对象,包括……函数
先做一个测试:
var a=[];
a[0]=function(){trace("!!!")};
a[0]();//输出!!!
不管数组是如何处理这样的脚本,只要能这样用就行。而这里,我将用数组来保存所有NPC的对话资料。
我用到的对话效果,就是利用数组来保存对话的所有数据,类似这样:
var talk_npc2=["测试NPC1"," "+"绝不得再深刻再多残忍,就算了吧我还活着!"];
talk_npc2[2]=function (){
is_talked=false;
trace("对话完了")
};
talk_npc2[0]是说话的NPC的名字
talk_npc2[1]是说话的NPC要说的话
talk_npc2[3]是说话的NPC在完成后要调用的函数
这样就完成了一次对话,当然,它还缺我们要定义的类。接下来就来定义。
我把这个对话的系统,写成了一个类Talk,它继承了MC(MovieClip)
用到的变量:
private var tar:MovieClip;//存放容
private var talkStr:String;//说话的内容
private var temp_str:String;//临时用到的字符串,会一个字一个字地显示
private var my_talk:MovieClip;//创建的元件变量
private var down_fun;//自动显示说话的内容
private var now_index:uint;//当前截取字符串索引
private var total_index:uint;//说的话的总长度
private var my_timer:Timer;//Timer实例
构造体:
public function Talk(_tar:MovieClip) {
tar=_tar;
}
这样创建了一个对话的实例,_tar是对话元件的存放的容器。
创建新的对话,将调用实例的方法: newTalk(array:Array)
public function newTalk(array:Array) {
down_fun=array[2];
my_talk=new talk_mc();
=300;
=200;
=array[0];
talkStr=array[1];
my_timer=new Timer(50);
now_index=0;
total_index=;
(,my_timer_fun);
(,my_md);
(my_talk);
();
return my_talk;
}
参数是一个数组,是的,