实用教程-让对象有更多姿势-拓展方法添加教程

修改于04/02338 浏览综合

星火Ts互助开荒QQ群:864876168

看到就是赚到,掌握学会这个价值不可估量的技巧可以让你少走N年弯路
TapTap
为星火基础类添加方法
此篇教程属于进阶教程,不理解的话先看一下这篇大神写的 个人星火ts使用教程
关于TS的编程问题不另作赘述。
众所周知,星火的类是封装后看不到源码也无法修改的,比如下面是类_物品栏(
class Inventory)的定义,只能看到参数和返回值的定义
TapTap
TapTap
此时如果我要为该类添加一个拓展方法在使用时将会极大的方便我们写程序,同时也更符合面向对象的编程方式,而不是面向过程。
TapTap
新建一个自定义文件夹,修改为TS脚本
TapTap
写下该方法的接口,具体定义看图
TapTap
具体定义方法
到此,基于ts的拓展方法已经写完,接下来如果是写TS的话就可以直接引用方法了,如下图
TapTap

不使用触发的观众可以直接拉到最下面了

接下来是触发里使用的方法有两种,一种是脚本调用,这种方式无需再做额外的事,但是缺点是要记住函数名字
TapTap
接下来是第二种方法,直接定义物品栏的成员函数,好处是可以和原生的方法一样直接选用,缺点是添加比较麻烦,希望以后拓展方法可以加起来更简单点
TapTap
显示依赖库,找到物品栏,添加成员函数
函数名以及参数和返回值严格按照TS里定义的来写
TapTap
方法1和2按照3删去不必要的参数或返回就可以了
触发里选择调用
TapTap
方法1没有返回值,我就不转换直接调用了
这里我看到方法2是没有参数的,但是上面触发【脚本】调用没有报错所以我也没发现,说明脚本有一定的容错性,这里我把脚本调用里的方法2参数删去了,严谨[表情_酷]
运行,完全没问题
TapTap
以上两种方法全部调用成功
这里我讲了函数的添加方法,拓展属性的添加各位也可以试试,差不多的哦[嗒啦啦2_经验+3]
本来研究触发弄拓展方法是想可以写一点拓展方法用于分享,不过现在看来在触发里添加的方式有点麻烦,因而分享触发拓展方法也就变的不现实了,但是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
群内有方便星火开发的实用工具分享
12
6
1