RPG Maker mv框架代码解析之窗口文字显示
目录
- 窗口文字显示
- 字体的颜色
- 通常色
- 系统色
- 危机色
- 死亡色
- 计量器背景色
- 血量计量器色1
- 血量计量器色2
- 魔法计量器色1
- 魔法计量器色2
- 魔法消耗色
- 力量上升色
- 力量下降色
- 技能值计量器色1
- 技能值计量器色2
- 技能值消耗色
- 颜色对象到底是什么
- 颜色值列表
- line 1
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- line 2
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- line 3
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- line 4
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 字体大小
窗口文字显示
RPG maker mv提供了若干种可以显示文字的组件,其中比较常见的就是窗口组件。那么我们来看看,如何在窗口上显示文字。
下面看一个例子:
//-----------------------------------------------------------------------------
// Window_Upgrade_Describe
//
// 升级项说明信息显示窗口(空)类
// 鼠标移动到升级项上时显示
function Window_Upgrade_Describe() {this.initialize.apply(this, arguments);
}
Window_Upgrade_Describe.prototype = Object.create(Window_Base.prototype);
Window_Upgrade_Describe.prototype.constructor = Window_Upgrade_Describe; Window_Upgrade_Describe.prototype.initialize = function(x, y) {var width = this.windowWidth();var height = this.windowHeight();Window_Base.prototype.initialize.call(this, x, y, width, height);this.contents.fontSize = 24;this.changeTextColor(this.normalColor());this.drawText("可以铸造", 0, 0, 200, 'left');this.changeTextColor(this.tpGaugeColor2()); this.drawText("优良", this.textWidth("可以铸造"), 0, 200, 'left'); this.changeTextColor(this.normalColor()); this.drawText("级装备", this.textWidth("可以铸造优良"), 0, 200, 'left');
};
Window_Upgrade_Describe.prototype.windowWidth = function() {return BUILDING_UPGRADE_DESCRIBE_WINDOW_WIDTH;
};
Window_Upgrade_Describe.prototype.windowHeight = function() {return BUILDING_UPGRADE_DESCRIBE_WINDOW_HEIGHT;
};
RPG maker mv提供了一个窗口基类对象(Window_Base),这个窗口基类对象提供了一整套文字显示相关的接口。我们先来看上面这个例子,我们自定义了一个窗口基类对象的子类对象(Window_Upgrade_Describe),在子类对象的initialize方法中准备窗口显示的文字。当我们在需要地方new这个子类对象时,就会调用到子类对象的initialize方法,在initialize方法方法中构建要在窗口上显示的文字。
现在我们看看具体是调用了哪些接口来显示文字的。
this.contents.fontSize = 24;
首先我们注意到了contents成员,这个成员其实是Window_Base的成员,通过继承得到的。在Window_Base中contents是一个bitmap对象(也是RPG maker mv提供的一个组件),窗口上的文字其实是描绘在contents成员上的,我们可以通过contents.fontSize设置窗口文字的字体大小。
this.changeTextColor(this.normalColor());
接下来我们看到了changeTextColor()方法,它也是继承自Window_Base对象,用来设置字体的颜色。参数是normalColor()方法的对象,通过名字可以了解是窗口通常色,还有若干类似的方法,分别返回RPG maker mv框架内部使用到的颜色,具体我们稍后再说。
this.drawText("可以铸造", 0, 0, 200, 'left');
最后我们看到最重要的一个方法了,drawText也是继承自Window_Base对象,用来显示文字。drawText()方法有五个参数,分别是:
- 要显示的文字(字符串)
- 显示的开始位置的x值
- 显示的开始位置的y值
- 字符串的宽度
- 文字对齐方式(靠左、居中还是靠右)
this.textWidth("可以铸造")
我们再来看一个有意思的辅助方法,textWidth也是继承自Window_Base对象,它可以计算并返回字符串的宽度,注意上面这个“可以铸造”返回的可不是4哦,是在屏幕上对应的像素点宽度。
结合前面的代码,我们可以看到显示文字的一般步骤:
- 设置字体大小
- 设置字体颜色
- 显示文字
字体的颜色
Window_Base对象提供了若干方法来获取框架内使用到的颜色对象:
通常色
Window_Base.prototype.normalColor = function() {return this.textColor(0);
};
系统色
Window_Base.prototype.systemColor = function() {return this.textColor(16);
};
危机色
Window_Base.prototype.crisisColor = function() {return this.textColor(17);
};
死亡色
Window_Base.prototype.deathColor = function() {return this.textColor(18);
};
计量器背景色
Window_Base.prototype.gaugeBackColor = function() {return this.textColor(19);
};
血量计量器色1
Window_Base.prototype.hpGaugeColor1 = function() {return this.textColor(20);
};
血量计量器色2
Window_Base.prototype.hpGaugeColor2 = function() {return this.textColor(21);
};
魔法计量器色1
Window_Base.prototype.mpGaugeColor1 = function() {return this.textColor(22);
};
魔法计量器色2
Window_Base.prototype.mpGaugeColor2 = function() {return this.textColor(23);
};
魔法消耗色
Window_Base.prototype.mpCostColor = function() {return this.textColor(23);
};
力量上升色
Window_Base.prototype.powerUpColor = function() {return this.textColor(24);
};
力量下降色
Window_Base.prototype.powerDownColor = function() {return this.textColor(25);
};
技能值计量器色1
Window_Base.prototype.tpGaugeColor1 = function() {return this.textColor(28);
};
技能值计量器色2
Window_Base.prototype.tpGaugeColor2 = function() {return this.textColor(29);
};
技能值消耗色
Window_Base.prototype.tpCostColor = function() {return this.textColor(29);
};
颜色对象到底是什么
通过上面的接口实现可以看到,所有的颜色对象都是通过textColor()接口返回的。那么textColor()接口究竟做了什么呢?
Window_Base.prototype.textColor = function(n) {var px = 96 + (n % 8) * 12 + 6;var py = 144 + Math.floor(n / 8) * 12 + 6;return this.windowskin.getPixel(px, py);
};
函数中的Math.floor()是一个向下取整的动作,可以看到整个函数根据输入的n计算出一个(px,py)值,再根据(px,py)取得Pixel。这里的Pixel是通过windowskin成员的getPixel()方法取得,那么windowskin是什么呢?
Window_Base.prototype.loadWindowskin = function() {this.windowskin = ImageManager.loadSystem('Window');
};
啊,原来windowskin 是一个Image对象,而这个Image对象是根据“Window.png”图片创建的。这里可能有的同学对ImageManager比较陌生,它是全局静态对象,负责读取、管理框架使用到的所有图片。上面就是通过ImageManager对象的loadSystem()方法创建了一个Image对象,或者更准确的说是一个Bitmap对象。
再来看看看getPixel ()方法的说明:
/**
* Returns pixel color at the specified point.
*
* @method getPixel
* @param {Number} x The x coordinate of the pixel in the bitmap
* @param {Number} y The y coordinate of the pixel in the bitmap
* @return {String} The pixel color (hex format)
*/
pixel color,一种采用十六进制形式表示颜色的字符串。
好的,现在我们来看看Window.png是一张怎样的图片:
Window.png是一张192*192大小的bitmap,bitmap右下方的部分就是rpg maker mv系统框架的窗口所使用到的颜色。我们可以根据textColor()方法的算法来确定每种色块的整数值,即textColor()的入参与色块的对应关系。
颜色值列表
line 1
0
白色的,由于背景也是白色的,所以看不到~
1
2
3
4
5
6
7
line 2
8
9
10
11
12
13
14
15
line 3
16
17
18
19
20
21
22
23
line 4
24
25
26
27
28
29
30
31
字体大小
Window_Base对象提供了一个获取窗口默认字体大小的接口:
Window_Base.prototype.standardFontSize = function() {return 28;
};
通过前面的例子,我们知道可以通过设置contents对象的fontSize来改变字体大小。至于每种大小的数值,这里无法进行真实大小的对比,就不在这里展示了,大家实际用到时可以试一试。
RPG Maker mv框架代码解析之窗口文字显示相关推荐
- RPG Maker mv框架代码解析之窗口图片显示
文章目录 1 窗口基类的图片描画接口 1.1 Face描画接口 1.2 Icon描画接口 2 描画自定义图片 1 窗口基类的图片描画接口 RPG Maker mv框架中的窗口基类(Window_Bas ...
- RPG Maker mv框架代码解析之Sprite_Button
1 Sprite_Button rpg maker mv框架中的按钮组件,一般作为窗口组件的成员使用. 2 原型 Sprite 3 方法 3.1 update callback,Sprite_Butt ...
- RPG Maker MV插件系统详解与如何编写插件
最新发布rmmv和以往的版本最大不同就是脚本系统了,整个脚本系统采用html5的javascript编写.和以往的ruby脚本简直天翻地覆 这也是为了实现跨平台运行,也是前所未有的高度编程自由,所有游 ...
- RPG Maker MV 踩坑一 新仙剑菜单
RMMV中菜单UI修改出现的错误 RMMV--灵儿续传 鬼畜主菜单 多菜单选中问题 其他问题 学习的教程 最终结果 接下来的要踩的坑 RMMV--灵儿续传 本人计划进入游戏行业的萌新,以前玩过新仙剑- ...
- 修改rpg maker mv的几种上限2020-05-25
关于rpg maker mv五种不会编程也能学会的突破上限的方法 声明,出现意外概不负责,如有简便方法欢迎评论. 以下方法建议用记事本打开,设置好后建议重新打开项目工程 修改变量上限 Map编号是自己 ...
- RPG Maker MV游戏解包
该文章最新版本请前往:https://www.crowsong.xyz/127.html 前言 使用Petschko's RPG-Maker-MV File-Decrypter进行解包 使用Petsc ...
- 【RPG Maker MV】RPG游戏《机器人养成记》制作笔记 - 制作背景和引擎选择
想让更多的人了解人工智能,学会机器学习,但机器学习本身有太高的入门门槛,导致很多人望而却步.因此一直在想办法让机器学习变得简单.有趣一些.做过一些尝试:比如用动画的形式介绍机器学习原理(点击查看),通 ...
- 写一个rpg maker mv 脚本,功能是让玩家在游戏开始时候可以自己捏脸
很抱歉,我并不会编写代码,但是我可以提供一些指导. 在RPG Maker MV中,你可以使用脚本编写一个"脸部编辑器"功能,允许玩家在游戏开始时进行自定义.你可以使用一些图像处理库 ...
- 记一次完整的RPG Maker MV游戏逆向系列第四篇
前言 阅读本篇前请先看之前的几篇分析噢,不然可能会缺失一些前置知识 这篇还是讲 RPG Maker MV 的游戏分析,主要是如何分析一种通过 GameusQuestSystems.js 的加密手段 工 ...
最新文章
- 干货|一文全解深度学习中的卷积
- 我理解的配置管理系统
- Python之路,day22-BBS基础
- element-ui中用el-dialog+el-table+el-pagination实现文件默认选中且在分页的条件下有记忆功能...
- 测试Spring的“会话”范围
- 847. Shortest Path Visiting All Nodes(一)
- python 显示图片matplotlib_Python OpenCV ——Matplotlib显示图片
- 《学习OpenCV》课后习题解答(第三章)(仅供参考)
- TCP流式套接字的异步事件WSAAsyncSelect编程
- python回到首行_python读取文件首行和最后一行
- jsp开发教程之 仿MOP论坛 二(数据库,界面设计篇)
- 如何在matlab中读写segy格式数据
- 短信验证码后端-接口设计
- 川藏自驾游的神州租车攻略
- 面试以前上司,能力一般,不想给他通过,但他卑微哀求,怎么办?
- 小老弟!听说你在搞Android 10.0 适配,看这篇就妥了!
- 那些好用的无版权免费图片网站
- c++删除U盘文件病毒
- 独家 | 火灾之后,我们能够利用大数据做些什么?
- 西部数据硬盘 跳线 (收藏)
热门文章
- Css+Jquery实现点击图片放大缩小预览 图片预览 查看大图
- 徐小贱c语言试卷,纹了这条锦鲤,我遇见了现在的老公 | 纹身大赏No.12
- 苹果最新框架教程之 ProximityReader是什么
- file_operations结构体介绍
- c 语言函数公有私有区分,C++私有成员函数
- PUE 1.2,总投资达36.4亿,17600个机柜!天和防务拟建陕西最大数据中心
- Umi3.5配置全局路由及菜单
- 软件实施工程师需要掌握的技能
- 台式机安装双系统win10+Ubuntu
- 【Windows安装WSL】WSL中安装Ubuntu发行版,提示占位程序接收到错误数据