RPGMV修炼手册2——RPGMV的部分窗口代码学习
//以下是官方的菜单命令窗口
//创建了一个构造方法
1.initialize方法的作用:
initialize在这里是构造函数,只是声明没有定义。
initialize函数的定义是在原型(prototype)中进行的,所以前面有(this.)。
构造函数与普通函数的区别在于,普通函数是可以直接调用的,而构造函数需要创建实例化对象后才可以调用
如:
a. 普通函数的调用方式:直接调用 普通函数();
b. 构造函数的调用方式:需要使用new关键字来调用 构造函数() = new 构造函数();
2.apply方法的作用:
call和apply看做是某个对象的方法,目的是通过间接方式进行调用函数。
call和apply的第一个实参是要调用函数的母对象,call方法是将所有参数罗列出来,而apply是将所有参数放在一个数组中。
所以使用apply方法比较利于传递参数。
function Window_MenuCommand() {
this.initialize.apply(this, arguments)
}
------------------------------------------------------------------------------
//按照Window_Command.prototype原型创建新的实例对象 类的继承
3.prototype
prototype的解释是原型的意思,他的值是对象,初始值默认为空。
4.constructor
constructor的解释是制造者的意思,他的值是函数本身。
5.__proto__
其值为父函数的prototype属性值。
Window_MenuCommand.prototype = Object.create(Window_Command.prototype);
Window_MenuCommand.prototype.constructor = Window_MenuCommand;
------------------------------------------------------------------------------
//实例化构造方法
Window_MenuCommand.prototype.initialize = function(a, b) {
Window_Command.prototype.initialize.call(this, a, b);
this.selectLast()
};
//这里的属性参数都延伸自父类Window_Command的属性参数,也就是官方基本窗口命令的参数
Window_MenuCommand._lastCommandSymbol = null;
Window_MenuCommand.initCommandPosition = function() {
this._lastCommandSymbol = null
};
//窗口的宽度
Window_MenuCommand.prototype.windowWidth = function() {
return 240
};
Window_MenuCommand.prototype.numVisibleRows = function() {
return this.maxItems()
};
//窗口的命令列表添加
Window_MenuCommand.prototype.makeCommandList = function() {
//执行添加主菜单命令的函数
this.addMainCommands();
//执行添加提示菜单命令的函数
this.addOptionsCommand();
//执行添加存储菜单命令的函数
this.addSaveCommand();
//执行添加结束游戏菜单命令的函数
this.addGameEndCommand()
};
//主菜单命令的函数的方法
Window_MenuCommand.prototype.addMainCommands = function() {
var a = this.areMainCommandsEnabled();
//物品栏
if (this.needsCommand("item")) {
this.addCommand(TextManager.item, "item", a)
}
//技能栏
if (this.needsCommand("skill")) {
this.addCommand(TextManager.skill, "skill", a)
}
//装备栏
if (this.needsCommand("equip")) {
this.addCommand(TextManager.equip, "equip", a)
}
//参数栏
if (this.needsCommand("status")) {
this.addCommand(TextManager.status, "status", a)
}
};
//提示菜单命令的函数方法
Window_MenuCommand.prototype.addOptionsCommand = function() {
if (this.needsCommand("options")) {
var a = this.isOptionsEnabled();
this.addCommand(TextManager.options, "options", a)
}
};
//存储菜单命令的函数
Window_MenuCommand.prototype.addSaveCommand = function() {
if (this.needsCommand("save")) {
var a = this.isSaveEnabled();
this.addCommand(TextManager.save, "save", a)
}
};
//结束游戏菜单命令的函数
Window_MenuCommand.prototype.addGameEndCommand = function() {
var a = this.isGameEndEnabled();
this.addCommand(TextManager.gameEnd, "gameEnd", a)
};
Window_MenuCommand.prototype.needsCommand = function(b) {
var a = $dataSystem.menuCommands;
if (a) {
switch (b) {
case "item":
return a[0];
case "skill":
return a[1];
case "equip":
return a[2];
case "status":
return a[3];
case "formation":
return a[4];
case "save":
return a[5]
}
}
return true
};
Window_MenuCommand.prototype.areMainCommandsEnabled = function() {
return $gameParty.exists()
};
Window_MenuCommand.prototype.isOptionsEnabled = function() {
return true
};
Window_MenuCommand.prototype.isSaveEnabled = function() {
return !DataManager.isEventTest() && $gameSystem.isSaveEnabled()
};
Window_MenuCommand.prototype.isGameEndEnabled = function() {
return true
};
Window_MenuCommand.prototype.processOk = function() {
Window_MenuCommand._lastCommandSymbol = this.currentSymbol();
Window_Command.prototype.processOk.call(this)
};
Window_MenuCommand.prototype.selectLast = function() {
this.selectSymbol(Window_MenuCommand._lastCommandSymbol)
};
RPGMV修炼手册2——RPGMV的部分窗口代码学习相关推荐
- RPGMV修炼手册1——RPGMV的基本了解
一.什么是RPGMV RPGMV 又称或是全称为 RPG Maker MV,是一个容易上手的RPG游戏制作工具,是RPG MAKER(简称RM)在2015年底推出的最新版本. 该版本的RM具备以下的特 ...
- 勇往直前的菜鸟修炼手册
文章目录 勇往直前的菜鸟修炼手册 自我介绍 项目相关 项目业务组件相关 前端框架和业务组件 管理方面 走查代码篇 日常怎么走查代码 企业微信的机器人道具,可以钩住代码push的消息. 假如你是一个前端 ...
- java修炼手册3.8_Java修炼手册
<Java修炼手册免费版>是一款专为想要自学JAVA的用户打造的全方位掌上学习软件,拥有各阶段的科学课程模块,从视频,资料,图片,演示等多种方面全面引导用户科学而快速的融入JAVA的世界中 ...
- 谈谈AI的ToB市场,我的新书《B端产品经理修炼手册》正式出版
2020年是特殊的一年,得益于这次疫情,在2月份有一个大长假,当时被封锁在东北老家的小出租屋内,于是就起笔开始写这本书,其实也是在心理早就有构思的,差不多用了十来天的时间完成了第一版.名字想了好久,最 ...
- 命令构建gradle项目_【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
预备知识 理解 gradle 的基本开发 了解 gradle task 和 plugin 使用及开发 了解 android gradle plugin 的使用 看完本文可以达到什么程度 了解 grad ...
- 【Android 修炼手册】常用技术篇 -- 聊聊 Android 的打包
这是[Android 修炼手册]系列第 10 篇文章,如果还没有看过前面系列文章,欢迎点击 这里 查看- 预备知识 了解 android 基本开发 看完本文可以达到什么程度 了解 Android AP ...
- 【Android 修炼手册】常用技术篇 -- Android 自定义 View
这是[Android 修炼手册]系列第 9 篇文章,如果还没有看过前面系列文章,欢迎点击 这里 查看- 预备知识 了解 android 基本开发 看完本文可以达到什么程度 学会自定义 View 以及其 ...
- 【Android 修炼手册】常用技术篇 -- Android 热修复解析
这是[Android 修炼手册]第 8 篇文章,如果还没有看过前面系列文章,欢迎点击 这里 查看- 预备知识 了解 android 基本开发 了解 ClassLoader 相关知识 看完本文可以达到什 ...
- 【Android 修炼手册】常用技术篇 -- Android 插件化解析
预备知识 了解 android 基本开发 了解 android 四大组件基本原理 了解 ClassLoader 相关知识 看完本文可以达到什么程度 了解插件化常见的实现原理 阅读前准备工作 clone ...
最新文章
- 内容推荐 | 生信技术与前沿内容知识库
- IE6Bug,外层container设置了overflow:auto,但是内层嵌套元素有position:relative的时候,显示错误。...
- 使用Windows8开发Metro风格应用五
- Tensorflow保存模型,恢复模型
- python_sting字符串的方法及注释
- python 画三角函数_python,将三角函数绘制成二维数组
- How to write a custom control with NSControl ...
- vm设置虚拟服务器定时重启,vm服务器设置自动重启
- WPF 如何在代码中使用自定义的鼠标资源
- 重建Windows 7的图标缓存
- stl之list双向链表容器应用基础
- 2013年蓝桥杯真题
- 物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平...
- Android高德地图poi检索仿微信发送位置
- 如何通便清肠快速见效_为什么有时候会一连几天没有排便?如何快速清肠通便?...
- Hazel引擎学习(八)
- 计算锋生的函数 frontogenesis
- 地理数据库GeoNames,并导入Mysql
- 9A530丨1ADSL丨10%,
- 文件上传黑名单和白名单校验
热门文章
- 哪一款iPhone拍照效果最好?拍照最好用的苹果手机是哪款
- Acwing 1191. 家谱树 (topsort
- php 生成300dpi图片,canvas生成图片只有96dpi,打印需要300dpi, 请问如何修改这个信息....
- Mysql 安装PMM监控 (一台主机安装)
- 天翼云监控客户pc端及手机端下载安装教程
- 华硕Fonepad 8、MeMO Pad 7以及MeMO Pad 8也随之登场
- Java之List系列--ArrayList扩容的原理
- 三国经典战役\三国合肥会战\三国孙权大战张辽\三国孙权一败张文远
- Web 面试之 HTTP和浏览器
- SSH协议及免密码登录