//以下是官方的菜单命令窗口

//创建了一个构造方法
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的部分窗口代码学习相关推荐

  1. RPGMV修炼手册1——RPGMV的基本了解

    一.什么是RPGMV RPGMV 又称或是全称为 RPG Maker MV,是一个容易上手的RPG游戏制作工具,是RPG MAKER(简称RM)在2015年底推出的最新版本. 该版本的RM具备以下的特 ...

  2. 勇往直前的菜鸟修炼手册

    文章目录 勇往直前的菜鸟修炼手册 自我介绍 项目相关 项目业务组件相关 前端框架和业务组件 管理方面 走查代码篇 日常怎么走查代码 企业微信的机器人道具,可以钩住代码push的消息. 假如你是一个前端 ...

  3. java修炼手册3.8_Java修炼手册

    <Java修炼手册免费版>是一款专为想要自学JAVA的用户打造的全方位掌上学习软件,拥有各阶段的科学课程模块,从视频,资料,图片,演示等多种方面全面引导用户科学而快速的融入JAVA的世界中 ...

  4. 谈谈AI的ToB市场,我的新书《B端产品经理修炼手册》正式出版

    2020年是特殊的一年,得益于这次疫情,在2月份有一个大长假,当时被封锁在东北老家的小出租屋内,于是就起笔开始写这本书,其实也是在心理早就有构思的,差不多用了十来天的时间完成了第一版.名字想了好久,最 ...

  5. 命令构建gradle项目_【Android 修炼手册】Gradle 篇 -- Gradle 源码分析

    预备知识 理解 gradle 的基本开发 了解 gradle task 和 plugin 使用及开发 了解 android gradle plugin 的使用 看完本文可以达到什么程度 了解 grad ...

  6. 【Android 修炼手册】常用技术篇 -- 聊聊 Android 的打包

    这是[Android 修炼手册]系列第 10 篇文章,如果还没有看过前面系列文章,欢迎点击 这里 查看- 预备知识 了解 android 基本开发 看完本文可以达到什么程度 了解 Android AP ...

  7. 【Android 修炼手册】常用技术篇 -- Android 自定义 View

    这是[Android 修炼手册]系列第 9 篇文章,如果还没有看过前面系列文章,欢迎点击 这里 查看- 预备知识 了解 android 基本开发 看完本文可以达到什么程度 学会自定义 View 以及其 ...

  8. 【Android 修炼手册】常用技术篇 -- Android 热修复解析

    这是[Android 修炼手册]第 8 篇文章,如果还没有看过前面系列文章,欢迎点击 这里 查看- 预备知识 了解 android 基本开发 了解 ClassLoader 相关知识 看完本文可以达到什 ...

  9. 【Android 修炼手册】常用技术篇 -- Android 插件化解析

    预备知识 了解 android 基本开发 了解 android 四大组件基本原理 了解 ClassLoader 相关知识 看完本文可以达到什么程度 了解插件化常见的实现原理 阅读前准备工作 clone ...

最新文章

  1. 内容推荐 | 生信技术与前沿内容知识库
  2. IE6Bug,外层container设置了overflow:auto,但是内层嵌套元素有position:relative的时候,显示错误。...
  3. 使用Windows8开发Metro风格应用五
  4. Tensorflow保存模型,恢复模型
  5. python_sting字符串的方法及注释
  6. python 画三角函数_python,将三角函数绘制成二维数组
  7. How to write a custom control with NSControl ...
  8. vm设置虚拟服务器定时重启,vm服务器设置自动重启
  9. WPF 如何在代码中使用自定义的鼠标资源
  10. 重建Windows 7的图标缓存
  11. stl之list双向链表容器应用基础
  12. 2013年蓝桥杯真题
  13. 物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平...
  14. Android高德地图poi检索仿微信发送位置
  15. 如何通便清肠快速见效_为什么有时候会一连几天没有排便?如何快速清肠通便?...
  16. Hazel引擎学习(八)
  17. 计算锋生的函数 frontogenesis
  18. 地理数据库GeoNames,并导入Mysql
  19. 9A530丨1ADSL丨10%,
  20. 文件上传黑名单和白名单校验

热门文章

  1. 哪一款iPhone拍照效果最好?拍照最好用的苹果手机是哪款
  2. Acwing 1191. 家谱树 (topsort
  3. php 生成300dpi图片,canvas生成图片只有96dpi,打印需要300dpi, 请问如何修改这个信息....
  4. Mysql 安装PMM监控 (一台主机安装)
  5. 天翼云监控客户pc端及手机端下载安装教程
  6. 华硕Fonepad 8、MeMO Pad 7以及MeMO Pad 8也随之登场
  7. Java之List系列--ArrayList扩容的原理
  8. 三国经典战役\三国合肥会战\三国孙权大战张辽\三国孙权一败张文远
  9. Web 面试之 HTTP和浏览器
  10. SSH协议及免密码登录