小无编辑摘要 |
无编辑摘要 |
||
第40行: | 第40行: | ||
extend(BulletType, { | extend(BulletType, { | ||
hit(b, x, y) { | '''hit(b, x, y) {''' | ||
print(b) | '''print(b)''' | ||
} | '''}''' | ||
} | } | ||
BulletType#hit(Bullet b) | '''BulletType#hit(Bullet b)'''和'''BulletType#hit(Bullet b, float x, float y)'''都会调用上面的hit方法, | ||
所以x,y可能为undefined | 所以x,y可能为undefined |
2024年2月17日 (六) 21:03的版本
Mindustry的JS
Mindustry使用: Rhino
类似于node.js,它没有window,document等一系列变量
Mindustry提供了一下全局变量:global.js
一些常用的变量
- scriptName: 当前脚本的名称(这会随脚本的变化而变化,建议: const { scriptName } = this;)
- modName: 当前Mod的名称(这会随mod的变化而变化,建议: const { modName } = this;)
- print: 打印日志
- extend: js 'extend(Base, ..., {})' = java 'new Base(...) {}'
关于解构复制
cosnt { a, b } = { a: 1, b: 2 };
特殊语法
new xxx/* functionName */ ( /* args */ ) { /* code */ }
其实就是xxx/* functionName */ ( /* args */ , { /* code */ } )
在最后面传了一个对象
所以你可以:new extend(Block, "a block") {
setBars() {
print(this.barMap)
}
}
一些小坑
一个函数接受所有方法,例如:
extend(BulletType, {
hit(b, x, y) {
print(b)
}
}
BulletType#hit(Bullet b)和BulletType#hit(Bullet b, float x, float y)都会调用上面的hit方法,
所以x,y可能为undefined