- 注册时间
- 2006-5-13
- 最后登录
- 2019-7-1
⑤进阶
- 积分
- 804
|
发表于 2007-3-8 21:29:09
|
显示全部楼层
可以通过在图片上确定一块按钮区域来实现嘛。
自定义系统设定及存取菜单的按钮既可以设定成在文字框附近一直出现,也可以设定成点击鼠标右键后出现。这里我们以前者为例进行说明。
首先是*text_lb部分的设定:
*text_lb
erasetextwindow 0
lsp 1,":c/2,0,3;data\\img\\sysbtn.bmp",530,320,120
lsp 6,":c/2,0,3;data\\img\\autobtn.bmp",330,460,120
lsp 7,":c/2,0,3;data\\img\\lkbkbtn.bmp",430,460,120
lsph 8,":c/2,0,3;data\\img\\skipbtn.bmp",530,460,120
lsph 9,":c,0,3;data\\img\\autobtnon.bmp",330,460,120
if %179==1 vsp 9,1:vsp 6,0
if %179==0 vsp 6,1:vsp 9,0
print 1
gosub *sysbtn
这部分的设定主要是将事先做好的菜单按钮显示到相应的文字框附近。其中6号和9号sp是自动模式按钮开启和关闭的两个状态,通过变量%179来用vsp指令控制其显示状态。
接着是*sysbtn的设定:
*sysbtn
spbtn 1,1
spbtn 6,6
spbtn 7,7
spbtn 8,8
return
*sysbtn的位置在*text_lb之前,return到*text_lb后自动执行下一条指令:
*textbtnloop
if %179==1 vsp 9,1:vsp 6,0
if %179==0 vsp 6,1:vsp 9,0
print 1
if %178!=2000 && %178!=3000 && %178!=4000 && %178!=5000 && %178!=6000 mov %178,3000
if %179==1 btntime %178
if %179==0 btntime -1
textbtnwait %0
repaint
if %0==-2 goto *end_textbtn
if %0==-1 vsp 1,0:vsp 6,0:vsp 7,0:vsp 8,0:vsp 9,0:print 1:systemcall windowerase:goto *text_lb
if %0==1 goto *systembtn
if %0==0 goto *end_textbtn
if %0==6 && %179==0 mov %179,1:goto *textbtnloop
if %0==6 && %179==1 mov %179,0:goto *text_lb
if %0==7 systemcall lookback:goto *text_lb
if %0==8 systemcall skip:goto *text_lb
if %0==100 goto *systembtn
goto *textbtnloop
这 个就是菜单按钮的主循环事件。其中%178用于控制自动模式的点击时间间隔,btntime -1表示手动模式。sysbtn是按钮“SYSTEM”,包括了“save”、“load”、“option”、“exit”四个弹出菜单按钮。 “lookback”为回想按钮,“skip”为跳过对话按钮。
其中,%0==0,即鼠标左键单击除按钮外的其他地方时,执行*end_textbtn:
*end_textbtn
texec
saveon
erasetextwindow 1
return
这个“return”会执行下一条指令,表现在AVG中就是继续进行下面的对话,刚好符合制作需要,相当巧妙。
然后是system的弹出菜单:
*systembtn
lsph 2,":c/2,0,3;data\\img\\savebtn.bmp",530,240,120
lsph 3,":c/2,0,3;data\\img\\loadbtn.bmp",530,260,120
lsph 4,":c/2,0,3;data\\img\\optbtn.bmp",530,280,120
lsph 5,":c/2,0,3;data\\img\\exitbtn.bmp",530,300,120
spbtn 2,2
spbtn 3,3
spbtn 4,4
spbtn 5,5
vsp 2,1
vsp 3,1
vsp 4,1
vsp 5,1
print 10,200
btnwait %0
if %0<=1 csp 2:csp 3:csp 4:csp 5:lsp 1,":c/2,0,3;data\\img\\sysbtn.bmp",530,320,120:goto *text_lb
if %0==2 csp 2:csp 3:csp 4:csp 5:goto *savesub:goto *text_lb
if %0==3 csp 2:csp 3:csp 4:csp 5:goto *textloadsub:goto *text_lb
if %0==4 csp 2:csp 3:csp 4:csp 5:goto *optionsub:goto *text_lb
if %0==5 csp 2:csp 3:csp 4:csp 5:goto *gamereset
纯粹的设定按钮位置和跳转事件而已,不予赘述。
之 后就是一系列的系统按钮设定,其主要思路就是通过按钮改变变量,再由变量设定系统参数,从而改变系统的音乐音效音量、自动模式点击时间间隔、窗口及全屏状 态等等。由于比较起其他部分来确实难度较小,加之代码较长,就不贴出来了。注意事先要用btndef ""清除按钮设定。
以下是很重要的自定义存档系统界面:
*savesub
btndef ""
csp -1
repaint
lsph 39,":c,0,3;data\\bg\\slbg.jpg",0,0
lsph 38,":a/2,0,3;data\\img\\exitbtn2.bmp",530,420
lsph 21,":a/2,0,3;data\\img\\slbtn.bmp",60,85
lsph 22,":a/2,0,3;data\\img\\slbtn.bmp",60,128
lsph 23,":a/2,0,3;data\\img\\slbtn.bmp",60,171
lsph 24,":a/2,0,3;data\\img\\slbtn.bmp",60,214
lsph 25,":a/2,0,3;data\\img\\slbtn.bmp",60,257
lsph 26,":a/2,0,3;data\\img\\slbtn.bmp",60,300
lsph 27,":a/2,0,3;data\\img\\slbtn.bmp",60,343
lsph 28,":a/2,0,3;data\\img\\slbtn.bmp",60,386
spstr " 38P39"
spstr " 21P22P23P24P25P26P27P28"
print 10,200
goto *savesub0
*savesub中主要设定了界面及按钮,这里根据界面和按钮的大小设定了8个存档位置。
*savesub0
lsp 13,":s/24,24,0;#ffffff$211",60,85
lsp 14,":s/24,24,0;#ffffff$212",60,128
lsp 15,":s/24,24,0;#ffffff$213",60,171
lsp 16,":s/24,24,0;#ffffff$214",60,214
lsp 17,":s/24,24,0;#ffffff$215",60,257
lsp 18,":s/24,24,0;#ffffff$216",60,300
lsp 19,":s/24,24,0;#ffffff$217",60,343
lsp 20,":s/24,24,0;#ffffff$218",60,386
repaint
goto *savesub1
存档信息的显示。注意用不同的变量独立记录各存档的信息,以免造成混乱。
*savesub1
spbtn 38,38
spbtn 21,1
spbtn 22,2
spbtn 23,3
spbtn 24,4
spbtn 25,5
spbtn 26,6
spbtn 27,7
spbtn 28,8
goto *savesub2
以上是8个存档位置按钮的定义。 |
|