[Triacontane(トリアコンタン)]CommandIcon命令项可加图标

点这里返回总目录
点这里返回Triacontane(トリアコンタン)插件介绍与笔记总目录

PartA

题记

  • 作者:Triacontane(トリアコンタン)
  • 版本:1.0.1
  • 简介:标题和菜单的命令项可以使用MV中的转义文字

概况

简单而实用的插件,丰富了标题和菜单的显示,其实这个插件,不止是增加图标,作者用增加图标命名可能因为增加图标是最常见的转义文字使用情况。
先啰嗦一下MV的转义文字。
MV原本的设计是在对话中可使用,把鼠标放在输入框内,会出现提示,这个提示是MV自带的转义。
当你用了插件之后,可能会有插件所增加的转义文字。例如YEP系列会增加很多实用转义,比如显示队伍第N个人员的脸图和姓名,如果以后有机会介绍YEP,大概会详细说一下。

插件可能性分析(情况推荐)

在命令项中支持转义文字,增加图标,变色等都可实现。

插件使用方法

  • 在插件管理器中启用即可。

注意事项

  • 这个插件并未支持判断ICON+文字在菜单中的总宽度是不是超过了设置的宽度。也就是说,要手动调试。文字不会自动缩小。

使用效果图

效果图

PartB

大致原理

复写Window_Command.prototype.drawText。
如果去源码里搜,会发现无法直接找到Window_Command.prototype.drawText这个函数。
但我们之前看过HiddenSkillsCannotUse这个插件,那时找的是被借来构造函数的另一个函数。
而Window_Command的构造方式,是Window_Selectable。
而Window_Selectable又是借用了Window_Base来构造。
隐藏得略微深了一些,祖传DNA....(喂!)
源码里,Window_base的drawText是这样定义的:

Window_Base.prototype.drawText = function(text, x, y, maxWidth, align) {
    this.contents.drawText(text, x, y, maxWidth, this.lineHeight(), align);
};

而Triacontane单独改写了Window_Command从祖辈那里继承的这个函数。
增加了一个判断条件,如果是选项窗口(就是调整音量什么的那个界面)的实例,那么和祖辈的方式一样。
如果不是选项窗口,是主菜单或标题菜单,那么调用的函数是drawTextEx。

一些啰嗦的笔记

  • instanceof
    值得一提的是,Triacontane追加的判断条件语句是这样的:
 if (this instanceof Window_Options)

这里面有个instanceof,C和C++可能没有这个运算符,因此我感到了陌生。
查了一下,在JS里,应该说会相当实用。
instanceof:判断其左边对象是否为其右边类的实例,然后返回布尔值。

  • apply与this
    时间隔得太久,我忘记我以前有没有提到过apply以及this指向。
    this可能是JS最灵活也最深的坑。
    一般情况下,this是指代调用者。
    举个例子,A这个对象去敲门,敲门这个动作如果看做一个函数,那么函数体内的this指的就是A对象,比this觉得手疼,就是说A觉得手疼。
    当然还有很多复杂的情况,但一般都是如此。
    MV的JS,大部分都是一般情况。
    apply和call也非常灵活,简单来说两者都是继承。apply和call的区别最明显的是函数参数。
    apply是(this, arguments),而call在一般情况下,要写出一个一个的参数。apply参数里,arguments是数组形式,直接写个数组上去也可以。
  • Window_Base.prototype.drawTextEx
    从插件里可以发现,其实是调用drawTextEx实现了转义文字。
    那么,借此计划研究一下源码Window_Base.prototype.drawTextEx。
    此插件的说明暂时结束。

其他

  • 无更新,暂无PartC。

你可能感兴趣的:([Triacontane(トリアコンタン)]CommandIcon命令项可加图标)