2011-11-22 11:11
全局变量D
[KR视觉研究会]文字渐变效果
想起来似乎是在一个自写AVG引擎里看到的效果,这几天在通《G弦上的魔王》正好也看到了类似的。
于是研究了一下。感谢船长指导……
其实基本原理也很简单,就是先画一个渐变层图片(可以用PS或者随便什么搞出来,牛的可以自己用脚本画),大小和游戏字体一个字的大小相等或者略大。例如游戏字体是25号,图片就是25x25。
这张图片可以在游戏一开始就加载,之后在显示文字的drawText指令之后用operateRect+乘算效果,将图片刷到字上。
渐变图片:
[attach]317[/attach]
游戏文字:
[attach]318[/attach]
代码1:读入隐藏的渐变图片
[code]
var ll2 = new Layer(kag, kag.fore.base);
with(ll2){
.loadImages("text_color_01");
.setSizeToImageSize();
.setPos(0,0);
.visible=false;
}
[/code]
代码2:复制到用于描绘文字的层上
[code]
var wd=ll.font.getTextWidth(ch);
var wh=ll.font.getTextHeight(ch);
ll.operateRect(dx,dy,ll2,0,0,wd,wh,omPsMultiplicative,255);
[/code]
KR里消息层上文字的描绘是在ll(LineLayer)上进行的,找到messageLayer或者MessageLayerOverride里对应的ll.drawText的行,然后在下面填写代码即可。
dx和dy是文字在当前linelayer上的位置,ch则是接下来要描绘的文字,因为KR默认文字是一个个字蹦出来的,每次准备描绘的也就是一个字。在这个字上以乘算方式显示渐变图片,也就达成了渐变显示的效果。
笔记:在整行都显示完毕以后lineLayer会被原样复制到message层固定位置,然后清空等待描绘下一行。
PS:不要问我为啥是红绿的啦因为红绿渐变效果最明显而已我的审美还没那么糟糕……= =b
[[i] 本帖最后由 全局变量D 于 2011-11-22 13:23 编辑 [/i]]