| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2016-4-27 |
| 在线时间 | 19 小时 |
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 19 小时
- 注册时间
- 2016-3-30
- 回帖
- 12
|
楼主 |
发表于 2016-3-31 23:17:14
|
显示全部楼层
睡之前来一发今天的研究成果,做一个改变文字颜色的小插件
首先来说下设计流程,对于官方的源码来看,文字显示出来的样子其实是一个字符一个字符处理出来的,处理过程中他做了一个转译和判断
这里主要说一些要改变文字颜色的关键部分,其余的请同学们自己多研究研究
在处理Text文本的时候,官方会通过这个方法把里面每个字符一个个的遍历出来(rpg_windows.js,307行)
其中 \x1b 这个东西的转译就是 ‘ \ ’ 反斜杠 ,这里官方把出现反斜杠后面的东西拿出来专门做处理,就是这个方法
this.processEscapeCharacter(this.obtainEscapeCode(textState), textState);
然后在rpg_windows.js,364行里,就是对后面带有以下字符的包含的文字特殊处理 , 其中包括C , I , { , }
你在新建一个文本消息,鼠标移到文本中不动的话,他会有提示怎样怎样会改变文字颜色啊,大小啊等,比如 ‘\{’ ‘ \}’ ‘\C’等,
I表示指定一个图标 用法: \I[图标id]
如图 左下角的1表示图标的id 就是那个骷髅的图标
\{ 表示后面的字符大小加大 比如要把 ‘你好吗?’ 中间的好加大 就在显示文本中这样写 ‘你\{好\}吗?’
\} 表示后面的字符大小减小 比如要把 ‘你好吗?’ 中间的好减小 就在显示文本中这样写 ‘你\}好\{吗?’
C表示改变后面文本的颜色 用法: \C[数字] 要变色的文字 \C
最后的\C 表示后面的文字不变色
那么既然有现成的文字变色,为啥还要自己写插件呢?原因有二
一,我看不懂他颜色值的算法- -(求大神教教)
二,我想随心所欲的用任意颜色,比方我随便用取色器取个颜色就放上去了
好,这就开工
知道了他是如何处理,我们就知道如何去改我们想要的东西了
就在他原本处理颜色这上面做手脚
case 'C':
this.changeTextColor(this.textColor(this.obtainEscapeParam(textState)));
break;
1,首先大家以往看到添加插件的时候,插件的参数啊,作者啊,描述啊,其实就是给加上注释就行了,咱们新建一个插件,叫myTextColor.js,然后把注释写上,使用的时候就能在界面上看到我们流弊的插件信息了
一一对照到注释来看添加插件界面就不难理解注释的意义了吧
2,根据之前的讲解,我们首先要注册我们的插件,同时还得把参数传进来的值用变量保存起来
这里的var colorNames = String(parameters['colorNames'] || 'white,red,green,blue'); 稍微解释一下 String后面带的参数意义是,如果在界面操作的时候,你不填colorNames的value是多少,我这里就默认给出这个值,colorValue雷同.
3,把传进来的值用个对象以健值对的形势保存起来,以便后面使用
这里的_colorObjs最后的样子就是
{
'white' : '#ffffff' ,
'red' : '#ff545d' ,
'green' : '#7aff3c' ,
'blue' : '#6da9ff'
}
4,为了显得我们插件流弊一点,得学学人家可以用命令动态添加颜色吧,再贴心一点,咱们把用法也给人说一下,免得别人用我们的插件一打开就萌比了
注释中的 myTextColor addColor orange #ff8153 就代表在pluginCommand里面这样用就能添加一个颜色
或者用js的方法调用的话Game_Interpreter.prototype.pluginCommand('myTextColor',['addColor','orange','#ff8153']);
5,最重要的地方,咱得改写以前的处理方式,在以前 \C 那里别人官方不是 \C[数字] 这样用么?咱给他整个流弊的 \C[颜色名称] 这样来用,其中这个颜色名称会从我们之前保存好的_colorObjs里面找到对应的颜色值,比如 \C['red'] ,这样就把后面的字的颜色改为了 '#ff545d'。
在rpg_windows.js中的354行,官方是这样取出他 \C[数字]中的数字的
咱们就如法炮制 ,给整个这个,差别就是官方的取的是个数字,咱取的是个字符串
6,所有准备工作都做好了,直接上菜吧,还是我的老习惯,给官方的改改改
大功告成,不过整个插件的验证不太可靠,就是说要是乱给写参数进来的话,报错啥的就不好说了,比如你把颜色值写个djsahdjsa什么的````
先贴个全部代码图
再来个使用示例图,这里咱把官方的那几个字体变大小啊,图标啊一并用上来玩
效果图
最后强调一下,为啥要在最后那句话前面写上 \C ,因为前面的 \C[颜色名] 会修改后面的所有文字 ,所以这里带上一个 \C 意思就是把颜色还原成默认的。
|
|