- 注册时间
- 2005-10-23
- 最后登录
- 2007-11-9
⑤进阶
↑苦力
- 积分
- 616
|
用NS做游戏,特别是做养成游戏的时候,有时需要屏幕上的数值变化着增加/减少而非瞬闪(就像心跳回忆的数值变化那样),这时就用for~next循环做一个小的SP动画出来。虽然原理很简单,但是要注意的细节比较烦,现记录如下。
*define
effect 2,10,2;定义一个显示时间为2毫秒的效果。选用10号象素淡入淡出效果最接近于1号的瞬闪,但瞬闪的时长不可以自定义(F话都瞬闪了还怎么定义= =),看起来变化效果并不明显,故选10号。
game
*start
mov %1,50;给初始变量赋值。
itoa $2,%1
显示数字吧。\
lsp 1,":s/30,30,1;#FFffff$2",300,300:print 2;显示未变化之前的数字,在游戏里就是平日的显示。
单击产生数值变化。\
rnd2 %2,1,5;变化值。
;下面是循环的部分
for %3=%1 to %1+%2;原来用+号可以的啊= =。使变量以递增方式增加。
itoa $1,%3
lsp 1,":s/30,30,1;#FF0000$1",300,300:print 2;显示递增1之后的数字。如果这里设定的颜色与平时的文字颜色不相同,就可以做出跟心跳里面完全一样的效果。(白色文字变色递增,再变回)
csp -1;清除sp对象。如果不加上这一行的话就得不到动画效果。
next
;现在把颜色变回来。
lsp 1,":s/30,30,1;#FFFFFF$1",300,300:print 2
click
reset
要使数值减少,加号改成减号,for循环后面加step -1这个指令。
要改变动画速度,就改变定义效果里的时长参数。
这个小动画也可以用作AVG某些诡异场景里的倒计时,将时长定义为1000毫秒并把字体放的很大搁在屏幕正中间时,那个气氛真是一个好啊……笑:)
PS 照例问一个问题……lsp定义的显示文字的字体可不可以变?在lsp的指令行里貌似没有字体变化参数的说。 |
|