关于论坛范例游戏中的一点疑问~(解决拉)
我宾少又回来了~我下了论坛的范例游戏,看了下,有好多不懂的地方,所以来请教~@macro name=lform
;这里就是macro的使用。当在脚本里写入时就会执行从@macro name=lform到@endmacro之间的代码,macro里不能用iscript和标签。
;这个macro的作用是根据日期变量改变上方日期栏的图片
@image layer=25 page=back storage="form0" visible=true left=0 top=0 opacity=255
;这一句将该层置于所有层上边
@pimage layer=25 page=back storage="w1" visible=true dx=50 dy=61 opacity=255 cond="f.周 == 1"
........
1.上面的那些段字,它说:"这一句将该层置于所有层上边!"这个图层不是有27层呢?这句话是什么意思呢?PS:他设置了27层~
2.还有,@image layer=25 page=back storage="form0"...........page不是应该设为pore吗?这个怎么设置成back了?具我所知,back应该不显示的吧.(因为基础教程中,没有对这个有介绍过,而且官方汉化的那个说明,也讲得不清不楚的)
3.method这个有3个参数crossfade\scroll\universal~请问这3个参数,分别是什么意思?
4.@move layer=17 time=300 path="(57,430,255)"
这个WM是什么意思呢?
5.比如说:我在A.KS中用call 调用一个宏,如果我转到B.KS或者其他的地方,那个宏命令是否还有用呢?
6.默认字显示的时候,是一个字一个字的出来.如何能使字出来的时候,就播放一个声音,就象打字机一样~
7.最重要的一个问题了:我已经弄好了1-31号的数字,还有年/月/日等等,如何做一个完整的日历出来呢?每月的日期都不一样,1月有31号,2月有28号........要怎么设置才能象现实中的一样?
如何给日期定一个变量呢?就是能操控日期,比如说,我在游戏中做了一件事情,这件事情要耗费15天的时间~然后我也这个变量+15,日历上就自动加上15天了......能不能给个思路呢? wm是wait move
page=fore/back的问题,看看后面的代码里有没有trans
trans里method就是前层图像到后层图像的变换方式,
- crossfade是渐变,
- scroll是滚动,通过from参数来指定是从哪边开始滚动(上下左右/top、bottom、left、right)
- universal是任意渐变,通过rule参数来指定渐变的规则图
日期的问题使用Date类。Date类的构造函数如下:
new Date();
new Date(<日期字符串>);
new Date(<年>, <月(0~)=0>, <日=1>, <时=0>, <分=0>, <秒=0>);
第一种是得到一个代表当前时间的Date对象,第二个是解析一个类似"2008/06/12 02:31:00"之类的字符串来创建Date对象,第三个是分别指定Date对象的年月日时分秒等参数。
假如创建了一个Date对象,Date d = new Date("2008/09/10 00:00:00");
接下来要给它加15天,只要d.setDate(d.getDate()+15);就行。
楼主大大的日历每次要显示的时候都从这么一个Date对象读取,每次你改变Date对象的值的时候紧接着让日历重新读一次数据就行。
要在字显示的时候输出声音要继承MessageLayer,并覆盖processCh(ch)函数。
function processCh(ch) {
super(...);
// 在这里加入播放声音的代码
} 谢谢楼上的大大~
1.那个page=fore/back的.代码里有写
@trans method=crossfade time=600
@wt
加上这个也只是有渐变效果吧!难道能让里页显示出来吗?那么说,里页的显示,要用trans命令才能显示的吧~没错吧?
2.那个第5个问题,没有回答哟~
3.关于您说的那个日历,我只是新手,看不懂您说的那些哟 trans就是将back页的内容变化到fore上。请阅读文档。
控制流的问题让D大大或者船长大人来回答,小的不敢乱说
日历的问题有别的办法解决,可以不用那么多TJS。但是不方便。楼主大大学点TJS好哈? 引用第3楼ravenex于2008-06-12 16:29发表的:
trans就是将back页的内容变化到fore上。请阅读文档。
控制流的问题让D大大或者船长大人来回答,小的不敢乱说
日历的问题有别的办法解决,可以不用那么多TJS。但是不方便。楼主大大学点TJS好哈?
那个小的的观念是,只要不是必须学TJS的话,尽量避免~
外号一下:TJS好学吗?-_- 1.语误,只是单纯的那层比其他层靠上的意思
2.trans是把后层的内容通过指定的方式复制到前层
3.R大讲过了
4.同上
5.没办法call一个macro……call只能call到标签……
如果你是说用call读入了一段代码里边有macro的定义,那么只要你之后不重新定义他,他都可以用
6.改messagelayer.tjs,或者找一段和你设置的文字速度同步的音效一直放
7.kag也可以,用if或者cond自己判断 6. 小的不建议修改直接MessageLayer类,那样太“危险”了,很难保证会不会破坏了原来的绘图逻辑。而制作与文字速度同步的音频太困难了,文字速度默认是可调整的,即便只有5段调节也得想办法处理,而且一直放只有在文字自动播放的时候才会有可接受的效果。
还是继承MessageLayer类,覆盖processCh(ch)方法靠谱些。新插入的音频播放部分从KAG原本的playse之类的处理程序抄过来就够用了。也就是这么一句:se[+elm.buf].play(elm);
7. 系统提供了的功能却不去使用(在KAG脚本中嵌入并使用TJS)而要自己走困难的路(单纯使用KAG脚本),小的觉着还是不方便。TJS作为一种入门的程序语言并不难学。如果先学习了C/C++/Java/C#/JavaScript/ActionScript,使用TJS几乎不需要额外的学习。但是反过来说,学习TJS并不要求上述基础,因为TJS比前面说的几种语言都简单。单纯为了能使用TJS而去学习Java绝对是本末倒置。
如果是使用TJS所提供的Date类,使用TJS也可以轻松地通过数组来完成工作。类似这样:
var 每月的天数 = ; // 记录每个月的最大天数
// TJS里数组的下标是从0开始的,所以开头放个0来占位
var 今天 = %["月" => 1, "日" => 1]; // 记住剧情的“当前”日期
今天["月"] = 6;
今天["日"] = 12; // 任意改变当前日期的内容
function 对日期增加天数(日期, 增加量) { // 定义一个函数
var 当前增量 = 增加量;
while (true) { // 无限循环
var 月 = 日期["月"]; // 得到日期中“月份”的部分
var 日 = 日期["日"]; // 得到日期中“天”或者说“日”的部分
if (日+当前增量 <= 每月的天数[月]) { // 没超过月底的天数
日期["日"] = 日+当前增量; // 不改变月份,直接增加日期
return 日期; // 返回结果
} else {
日期["月"]++; // 先把月份自加一
if (日期["月"] > 12) 日期["月"] = 1; // 如果月份超过了12则复位到1
当前增量 -= 每月的天数[月]-日; // 把多余的增量减下去
if (当前增量 <= 每月的天数[日期["月"]]) {
日期["日"] = 当前增量; // 增加日期
return 日期; // 返回结果
} else {// 如果剩余的增量超过了下个月的天数
当前增量--;
日期["日"] = 1;
// 注意这个分支没有返回
}
// 如果增量使日期超过了下个月的天数怎么办?循环再检查一遍。这就是为什么要循环
}
}
return 日期; // 永远不会运行到这里,安全起见写一句
}
对日期增加天数(今天, 55); // 调用这个函数,“今天”加上55天就变成8月6日
每行里面,// 之后的都是注释,不对被执行的代码造成影响。
小的故意把变量名和函数名都写成中文来说明问题。平时自己用还是最好把这些名字用英文写,习惯问题,写中文也不是不行。
上面的代码就是可以执行的TJS代码。不难吧。如果要更安全更好地处理还是用类比较好。但这样不用类,自己小心点也够用。
小的觉着要更方便得使用KR的各种功能,学习哪怕一点TJS还是很有好处和必要的。 学tjs是很方便,但是我初学的时候对tjs在kag里边的嵌入经常茫然,对class更加茫然,也就是学了一段时间才开始对tjs有点明白,开始直接用tjs来写界面和计算,如果是初学者而且没有C/C++/Java/C#/JavaScript/ActionScript基础的话,我觉得先了解kag就够了,同时去了解kag和tjs会造成混乱的吧。
不过当然,这只是个人看法,如果做变量控制的确tjs比kag方便很多,kag本来也就是用eval调tjs式来进行变量计算的 谢谢楼上的几位大大.我现在就只有日历那个问题了~
R大,您写的那个TJS例子好象不行~
那个难道非要真的学点TJS不吗?那有没有TJS的教程,我去学点. 谢谢拉~ http://kcddp.keyfc.net/bbs/viewthread.php?tid=136&extra=page%3D1
13楼日历系统……
用KAG就能搞定了。-—-
页:
[1]
2