(→new xxx/* functionName: ( →args: ) { →code: } */) |
无编辑摘要 |
||
第13行: | 第13行: | ||
* <code>modName</code>: 当前Mod的名称(这会随mod的变化而变化,建议: <code>'''const''' { modName } = '''this''';</code>) | * <code>modName</code>: 当前Mod的名称(这会随mod的变化而变化,建议: <code>'''const''' { modName } = '''this''';</code>) | ||
* <code>print</code>: 打印日志 | * <code>print</code>: 打印日志 | ||
* <code>extend</code>: '''js '<nowiki/> | * <code>extend</code>: '''js '<nowiki/>''' | ||
=== 关于[https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment 解构复制] === | === 关于[https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment 解构复制] === |
2024年2月18日 (日) 16:36的版本
Mindustry的JS
Mindustry使用: Rhino
类似于node.js,它没有window
,document
等一系列变量
Mindustry提供了一下全局变量:global.js
一些常用的变量
scriptName
: 当前脚本的名称(这会随脚本的变化而变化,建议:const { scriptName } = this;
)modName
: 当前Mod的名称(这会随mod的变化而变化,建议:const { modName } = this;
)print
: 打印日志extend
: js '
关于解构复制
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) } }
Getter & Setter
你可以使用xxx.class
等价于xxx.getClass()
- 注意:
Vars.class
获取到的是Class类,如果想要获取对应类对象 可以使用Vars.__javaObject__
一些小坑
一个函数接受所有方法,例如:
extend(BulletType, { hit(b, x, y) { print(b); } }
BulletType#hit(Bullet b)
和BulletType#hit(Bullet b, float x, float y)
都会调用上面的hit方法,
所以x
,y
可能为undefined