”重写方法“重写指的是对系统原函数的重写,重写方法的目的在于改变系统原函数的作用或者快速制作出与原函数功能类似的函数


3.1 什么是方法

其实这个应该属于语法上的知识,由于非常重要,所以我结合RPGMAKER来讲基于对象的方法及与其有关的属性,参数,加深大家的理解。

参数如果有JavaScript语言基础,就会知道,获得对象一般是先写出一个构造函数,然后使用new<对象名><(实参表)>来建立。

Person = function(name,number) {this._name =name;this._number=number;this._country="中国";this._age;
};
var sunWuKong=new Person("孙悟空","1");

我随便设计一个构造函数,简单解释一下:
Person既可以是一个普通函数,也可以是一个构造函数,这取决你如何使用它,如果你要使用它建立一个对象,它就是构造函数(有个不成文的规则,如果是构造函数,首字母大写,如果是普通函数,按照通用的驼峰命名法命名)。
当你使用new创建对象时,传入的实参name和number就是这个对象的参数

还是利用上面的例子,Peron类需要使用参数创建对象,之后获得的对象一定会有属性,这些属性包括使用实参初始化的,比如name和number,也包括默认值如country,还包括定义但是未赋值的变量age。它们一起构成了这个对象的属性

有些对象,是能做一些事情的,这些就称作对象的方法,方法,我们一般在构造函数外定义。

Person.skill=function(){
alert("我是"+name);
}
sunWuKong.skill();   // //输出“我是孙悟空”

显而易见,方法就是这个对象所带有的函数。

3.2 RPGMAKER内部对象如何管理方法?

首先再复习一遍原型链的知识,对我们来说,知道原型链就是一种对父类方法和属性的继承,迭代的过程,对象通过原型链向上可以使用父类的属性和方法,向下可以创建自己的子类就够了。(想了解更多请查阅相关文章)

可以说RM中对象及其方法的构建是极其有逻辑的,我们还是拿管家类(Manager)来作为例子

很显然,你家的管家不是天生就有的,管家刚出生时,还和所有人一样,是个什么都不会的孩子,不过他有父母。
他的父亲(Manager对象)会教会他一些最基本,生存所需的知识,这些知识就通过原型链传递给了管家,于是管家从父亲那里继承了:1.都是人(都是同一种对象)2.都会做一些所有对象都会做的事(这些事就来自祖宗对象"Object“,其资料可以在W3School上查到);

这个孩子长大了,想要另立门户,于是他通过学习知识,掌握了一些关于管理物品的方法,所以他决定给自己起一个新名字,叫做**“物品管家”**)

function ObjectManager() {this.initialize.apply(this, arguments);
}ObjectManager.prototype = Object.create(Manager.prototype);
ObjectManager.prototype.constructor = ObjectManager;ObjectManager.prototype.initialize = function() {Manager.prototype.initialize.call(this);     //物品管家继承了他父亲的原型链this.skill ();   //物品管家自己学会的新技能
};ObjectManager.skill()=function(){
alert("我是物品管家");
}

在这之后物品管家就是一个新的对象了,他可以通过原型链找到他父亲的方法,同时也有自己的方法skill。

好了,肯定有小朋友要问,为什么搞这么复杂呢,用一个管家解决所有问题不是就不用继承那么多次了吗?
其实,我们不断继承细分,就是为了方法好找,制作一个游戏所需要的方法之多,不能一步就找到,就好像你不能从一张中国地图找到一个人一样,你一定得先找到哪个省,哪个市,哪条路,哪个门牌,最终找到人,代码中对象不断继承,也是为了方便找到自己需要的方法,同时避免平行方法太多导致代码难以调试。

补充:精灵对象的原型链

通过学习这条原型链,大家可以对原型继承有更加深入的理解,对为什么要通过原型链细分方法有更深的认识。

祖先:永远是Object
第二代:Spirte 精灵
第三代:Sprite_Base 基础精灵
第四代:Sprite_Button 按钮精灵 , Sprite_Character角色精灵,Sprite_Battler 战斗精灵,Sprite_Actor角色精灵,Sprite_Enemy敌人精灵,插件中由其它继承而来的自定义精灵…
第五代:精灵实例

链接

第一节:前期准备以及RPGMAKER内建逻辑
第二节:如何理解插件,以及编写代码时的注意事项
第四节:重写方法(一):命名空间
第五节:重写方法(二):call函数,apply函数,覆盖式重写与复制式重写

RPGMAKER游戏引擎基于JavaScript的插件制作(三)——重写方法预备知识教学相关推荐

  1. RPGMAKER游戏引擎基于JavaScript的插件制作(六)——重写方法(三):在场景(scenes)中创建精灵(Sprite)——复制式重写的实例教学

    因为要开新坑了,准备连续更新把这个插件制作的坑填完,之后更新的是"可交互精灵--事件绑定教学","窗口(windows)教学","自动战斗AI实现-- ...

  2. RPGMAKER游戏引擎基于JavaScript的插件制作(二)——如何理解插件,以及编写代码时的注意事项

    之前写的时候不想写这部分就先跳过了,于是拖到现在- 这篇主要作用是做一些细节上的整理,根据我的经验不断完善,也欢迎在评论中补充. 重要的知识放在重写方法部分. 2. 1如何理解插件 我认为读我这篇博客 ...

  3. 转:高层游戏引擎——基于OGRE所实现的高层游戏引擎框架

    高层游戏引擎--基于OGRE所实现的高层游戏引擎框架 这是意念自己的毕业论文,在一个具体的实践之中,意念主要负责的是物件和GUI之外的其他游戏系统.意念才学疏陋,望众位前辈不吝赐教.由于代码质量不高. ...

  4. 高层游戏引擎——基于OGRE所实现的高层游戏引擎框架

    技术文档(Document) 来自:noslopforever的专栏 高层游戏引擎--基于OGRE所实现的高层游戏引擎框架 这是意念自己的毕业论文,在一个具体的实践之中,意念主要负责的是物件和GUI之 ...

  5. 基于jQuery日历插件制作日历

    这篇文章主要介绍了基于jQuery日历插件制作日历的相关资料,需要的朋友可以参考下 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制作逻辑吧: ·一个月份最多有31天 ...

  6. java7 javascript引擎_Java7中脚本引擎的一般用法,共三种方法获得JavaScript引擎:名称、文件扩展名、MIME类型 | 学步园...

    package com.sino.java7; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; i ...

  7. win7 html 插件,win7系统清理插件的三种方法

    近期好多网友询问说win7系统怎么清理插件?我们在使用网络软件和插件时,可以带来很多便利.但是使用过程中会不可避免的安装一些不必要的电脑插件,甚至是恶评插件,这对电脑安全构成威胁.所以我们要清理一些无 ...

  8. JavaScript刷新当前页面的三种方法,载入新文档替换当前页面

    通过JavaScript刷新当前页面的三种方法代码就可以简单的实现,首先我们来看三种刷新当前页的方法: reload() 方法; replace() 方法; 页面自动刷新; 方法1:reload() ...

  9. 高层游戏引擎——基于OGRE所实现的高层游戏引擎框架(2)

    Preview 游戏形态与其所决定的程序形态 电脑游戏的本质是模拟现实 "游戏是先于人类的,许多学者在关注游戏时候发现,在自然界哺乳类动物里存在着大量的游戏行为-- "尽管游戏的历 ...

最新文章

  1. 人脸检测库libfacedetection介绍
  2. 梯度的直观理解_梯度下降最直观的理解
  3. STM32的ADC采样与多通道ADC采样
  4. LiveVideoStackCon深圳-发掘移动客户端更多可能
  5. Linux磁盘管理——df、du、磁盘分区、格式化、挂载、LVM
  6. 文件系统管理相关命令
  7. 离屏渲染在车载导航中的应用
  8. 夯实Java基础(二十)——JAVA正则表达式
  9. python进阶教程之异常处理
  10. 3dmax如何显示参考图_3d效果图渲染丢材质、丢贴图该如何解决?
  11. DNSBIND——DNS的ACL和视图
  12. oracle浪潮优派,检查数据库的CPU和PSU补丁信息
  13. Windows 使用 Detours 进行 HOOK
  14. 取消管理员取得所有权_取消管理员取得所有权|右键管理员取得所有权|win10获取管理员权限...
  15. [HarmonyOS][鸿蒙专栏开篇]快速入门OpenHarmony的LiteOS微内核
  16. QQ2005beta3新功能图片抢先看!(转)
  17. 沟通修炼 I型沟通-U型沟通
  18. Cisco远程访问(SSL)虚拟专用网的工作原理
  19. 6种难以启齿的离职原因,最好这么说
  20. 数据治理项目调研环节思考

热门文章

  1. 联想u盘启动linux,联想thinkpad e335台式机bios设置u盘启动的方法
  2. ghost系统后只有一个盘了别的分区的数据怎样恢复
  3. 谷歌pay服务端文档_米大师服务端说明
  4. php 判断不同分辨率,关于不同分辨率手机显示有区别的解决办法
  5. 一行能装逼的JavaScript代码的延伸
  6. 能够打开国内网络,比如百度微信,但是打不开外国网站,该怎么解决(主要是DNS的问题)...
  7. 华为手机鸿蒙系统手机_升级快讯:又一批华为手机可以升级到“鸿蒙系统”了!...
  8. BCELOSS和MSELOSS区别(pytorch BCELoss and MSELoss)
  9. Zuul(一)网关和路由
  10. DDOS流量攻击如何防御分析以及被攻击的解决方案