RPGMAKER游戏引擎基于JavaScript的插件制作(四)——重写方法(一):命名空间

接下来就进入到编写插件最重要的部分了,那就是方法重写。

前面我已经讲过方法了,在RM中,方法储存在一个个功能各异但是同根同源的对象中,然后游戏就是通过对象实例化,调用对象方法,实现游戏的各个功能。(这里要为大家区分一下静态类与非静态类,静态类指全局唯一的对象,不能也不需要实例化,作用域为全局,比如角色,技能,地图这些共用的对象,都在RM中定义为了静态类)

4.1 为什么插件制作核心在于重写方法?

我将举个例子帮助大家理解:
现在你有一个用清一色形状相同红砖砌成的简陋房子(就是RM自带的简陋代码),你想要把它改装成一个造型独特的建筑。
你并不会烧砖,所以只能对这栋房子原来的红砖进行改造,夹带私货。这就涉及重写方法的几个问题:
1.不自己烧砖(你很难从头写出与官方代码完全兼容的代码);
2.只是对原有砖头改造(继承原型链);
3.不要把全部砖都搞成一个样子(设置自己的原型链,尽量不要覆盖全局代码)。

4.2 为什么不要覆盖全局代码

因为我们的插件可能只是在某些方面需要用到,而系统定义的对象往往是全局使用的,比如精灵对象,你想建立一个可以闪烁的精灵放在开场界面里面,但是并不是整个游戏都需要闪烁的精灵。

Sprite_Base.prototype.update = function() {
    Sprite.prototype.update.call(this);
    this.updateVisibility();
    this.updateAnimationSprites();
    this.flashing();    //你在系统源代码中插入的“私货”
};

假设你就直接在源代码sprite.js中的Sprite_Base的刷新函数(就是每隔一帧就会执行一次的方法)加入一个自己定义的“闪烁”函数,那么以后所有通过new Sprite获得的对象都会继承这个方法,由于整个游戏的精灵都是继承这个对象,那么就导致整个游戏的精灵都会闪烁,这可不是我们最初想要看到的结果。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值