本帖最后由 蓝烟清 于 2011-10-8 15:23 编辑
第八讲 弹出框
8.1 介绍与遗留问题
弹出框是显示系统提示信息常用的方法,不过这一讲还没有涉及菜单相关。
学习目标:掌握各种弹出框方式的运用
遗留问题:暂无
8.2 函数定义
DrawString(x,y,str,color,size); --在以x,y做为起点的位置显示一串文字,color是颜色,size是文字的大小
DrawStrBox(x,y,str,color,size); --参数与DrawString相同,只是显示时有边框。若x=-1,y=-1则在屏幕中间显示
DrawStrBoxYesNo(x,y,str,color,size); --参数与DrawString相同,有边框,并且除了显示文字外还带有是或否的选项。若x=-1,y=-1则在屏幕中间显示
DrawStrBoxWaitKey(s,color,size); --在屏幕中间显示一串文字,有边框,并且在按任意键后内容才消失
QZXS(str,color,size); --S大自己写的函数,在屏幕中间显示一串文字,有边框,并且在按任意键后内容才消失。和DrawStrBoxWaitKey类似
8.3 具体的说明
做一个相对复杂的例子,全面运用到之前所学的内容。
8.3.1 第一步
在MyDIY目录新增两个文件Talk_File.lua和MyEvent4010.lua
8.3.2 第二步
打开Talk_File.lua文件,输入下面的内容:- CC.MyTalk1 = "测试Talk";
- CC.MyTalk2 = "测试TalkEx";
- CC.MyTalk3 = "测试say";
- CC.MyTalk4 = "静夜思";
- CC.MyTalk5 = "床前明月光,疑是地上霜";
- CC.MyTalk6 = "举头望明月,低头思故乡";
- CC.MyTalk7 = "哈哈~~原来是这样~~我终于明白了";
- CC.MyTalk8 = "七七四十九天之后....";
- CC.MyTalk9 = "有此功夫,天下尽在我手";
复制代码 8.3.3 第三步
打开MyEvent4010.lua文件,输入下面的内容:- OEVENTLUA[4010] = function()
- local f = DrawStrBoxYesNo(-1,-1,"咦,有一个箱子,是否要打开(Y/N)?",C_ORANGE,CC.DefaultFont);
- if f == false then
- return;
- end
-
- Cls();
- local x = CC.ScreenW/2;
- local y = CC.ScreenH/2;
- local color = C_GOLD;
- local size = CC.Fontbig;
- local offx = (#CC.MyTalk5 - #CC.MyTalk4)*size/4;
-
- DrawString(x+offx,y,CC.MyTalk4,color,size); --静夜思
- ShowScreen();
- lib.Delay(1000);
- DrawString(x,y+30,CC.MyTalk5,color,size); --床前明月光,疑是地上霜
- ShowScreen();
- lib.Delay(1000);
- DrawString(x,y+60,CC.MyTalk6,color,size); --举头望明月,低头思故乡
- ShowScreen();
- lib.Delay(1000);
-
- say("R6"..CC.MyTalk7,0,1,JY.Person[0]["姓名"]); --哈哈~~原来是这样~~我终于明白了
-
- instruct_14(); --场景变黑
- instruct_13(); --场景变亮
- QZXS(CC.MyTalk8); --七七四十九天之后....
- --也可以这样 DrawStrBoxWaitKey(CC.MyTalk8,C_GOLD,CC.Fontbig);
-
- Talk(CC.MyTalk9,0); --有此功夫,天下尽在我手
-
- --instruct_33(0,1,0); --主角学会罗汉拳
- --也可以用下面的,直接洗掉第一个武功
- JY.Person[0]["武功1"] = 1;
- JY.Person[0]["武功等级1"] = 0;
- DrawStrBoxWaitKey(string.format("%s 学会武功 %s,等级%d级",JY.Person[0]["姓名"],JY.Wugong[1]["名称"],JY.Person[0]["武功等级1"]/100+1),C_ORANGE,CC.DefaultFont);
-
- local gjl = AddPersonAttrib(0,"攻击力",50);
- local qg = AddPersonAttrib(0,"轻功",20);
- --DrawStrBoxWaitKey(string.format("%s 攻击力增加%s点 轻功增加%s点",JY.Person[0]["姓名"],gjl,qg),C_ORANGE,CC.DefaultFont);
- --换成QZXS
- QZXS(string.format("%s 攻击力增加%s点 轻功增加%s点",JY.Person[0]["姓名"],gjl,qg));
-
- instruct_3(-2,0,1,0,0,0,0,2612,2612,2612,-2,-2,-2); --箱子打开形状
-
- Cls();
- end
复制代码 8.3.4 第四步
打开DIY.lua文件,输入下面的内容:- dofile ".\\script\\MyDIY\\Talk_File.lua";
- dofile ".\\script\\MyDIY\\MyEvent4010.lua";
- instruct_3(70,0,1,0,4010,0,0,2610,2610,2610,0,18,33);
复制代码 8.3.5 第五步
进入游戏,执行我的代码,在小村木桩旁边,自己试试哦。
8.4 结束语
弹出框用途很广,常用于系统的提示,多用几次,就能很好的掌握了。
8.5 补充知识
8.5.1 颜色(color)
系统常用的文字颜色:
C_RED=RGB(216, 20, 24);
C_WHITE=RGB(236, 236, 236);
C_ORANGE=RGB(252, 148, 16);
C_GOLD=RGB(236, 200, 40);
可以根据自己的喜欢自己定义一些颜色,比如C_MY_BLUE=RGB(51, 29, 250);
8.5.2 文字大小(size)
CC.FontBIG=math.modf(math.min(CC.ScreenW,CC.ScreenH)/12) --最大,未使用 640x480时size=40
CC.FontBig=math.modf(math.min(CC.ScreenW,CC.ScreenH)/15) --较大,游戏开始菜单使用 640x480时size=32
CC.Fontbig=math.modf(math.min(CC.ScreenW,CC.ScreenH)/20) --通常字号,对话菜单等使用 640x480时size=24
CC.Fontsmall=math.modf(math.min(CC.ScreenW,CC.ScreenH)/24) --稍小字号 640x480时size=20
CC.FontSmall=math.modf(math.min(CC.ScreenW,CC.ScreenH)/30) --较小字号 640x480时size=16
CC.FontSMALL=math.modf(math.min(CC.ScreenW,CC.ScreenH)/40) --最小字号 640x480时size=12
CC.DefaultFont默认大小,一般值为CC.Fontbig
8.5.3 其它
CC.ScreenW:游戏屏幕的宽度变量
CC.ScreenH:游戏屏幕的高度变量
Cls();:清除屏幕上的draw
ShowScreen();:显示屏幕上的draw
lib.Delay(t); 游戏暂停t毫秒
本讲至此结束了,下一讲将会是菜单选项。
本次讲学的源码附件:
|