实用教程-让对象有更多姿势-拓展方法添加教程
星火Ts互助开荒QQ群:864876168
看到就是赚到,掌握学会这个价值不可估量的技巧可以让你少走N年弯路
此篇教程属于进阶教程,不理解的话先看一下这篇大神写的 个人星火ts使用教程
关于TS的编程问题不另作赘述。
众所周知,星火的类是封装后看不到源码也无法修改的,比如下面是类_物品栏(
class Inventory)的定义,只能看到参数和返回值的定义
此时如果我要为该类添加一个拓展方法在使用时将会极大的方便我们写程序,同时也更符合面向对象的编程方式,而不是面向过程。
到此,基于ts的拓展方法已经写完,接下来如果是写TS的话就可以直接引用方法了,如下图
不使用触发的观众可以直接拉到最下面了
接下来是触发里使用的方法有两种,一种是脚本调用,这种方式无需再做额外的事,但是缺点是要记住函数名字
接下来是第二种方法,直接定义物品栏的成员函数,好处是可以和原生的方法一样直接选用,缺点是添加比较麻烦,希望以后拓展方法可以加起来更简单点
函数名以及参数和返回值严格按照TS里定义的来写
触发里选择调用
这里我看到方法2是没有参数的,但是上面触发【脚本】调用没有报错所以我也没发现,说明脚本有一定的容错性,这里我把脚本调用里的方法2参数删去了,严谨
运行,完全没问题
这里我讲了函数的添加方法,拓展属性的添加各位也可以试试,差不多的哦
本来研究触发弄拓展方法是想可以写一点拓展方法用于分享,不过现在看来在触发里添加的方式有点麻烦,因而分享触发拓展方法也就变的不现实了,但是TS里就非常方便,一个文件就能共享了,所以写TS的可以加群分享以及被分享
附送一个获得背包格剩余格子的拓展方法,可以直接使用
interface Inventory {
获得空格数量(): number;
}
Inventory.prototype.获得空格数量 = function () {
let n: number = 0;
let slotArray: Array<Slot> | undefined = this.slots;
if (slotArray !== undefined) {
for (let [k, v] of base.ArrayIterator(slotArray as unknown as Array<Slot>)) {
if (v.item == null) {
n = n + 1;
}
}
} else {
log.warn("未找到slotArray")
return -1;
}
return n;
};
星火Ts互助开荒QQ群:864876168
群内有方便星火开发的实用工具分享