无编辑摘要 |
无编辑摘要 |
||
第2行: | 第2行: | ||
Mindustry使用: [https://github.com/Anuken/Rhino Rhino] | Mindustry使用: [https://github.com/Anuken/Rhino Rhino] | ||
类似于[https://nodejs.cn/ node.js],它没有'' | 类似于[https://nodejs.cn/ node.js],它没有''<code>window</code>,<code>document</code>''等一系列变量 | ||
[[https://www.runoob.com/js/js-tutorial.html 菜鸟教程]] | [[https://developer.mozilla.org/zh-CN/docs/Web/javascript MDN]] | [[https://www.runoob.com/js/js-tutorial.html 菜鸟教程]] | [[https://developer.mozilla.org/zh-CN/docs/Web/javascript MDN]] | ||
第10行: | 第10行: | ||
一些常用的变量 | 一些常用的变量 | ||
* scriptName: 当前脚本的名称(这会随脚本的变化而变化,建议: '''const''' { scriptName } = this;) | * scriptName: 当前脚本的名称(这会随脚本的变化而变化,建议: <code>'''const''' { scriptName } = '''this''';</code>) | ||
* modName: 当前Mod的名称(这会随mod的变化而变化,建议: '''const''' { modName } = this;) | * modName: 当前Mod的名称(这会随mod的变化而变化,建议: <code>'''const''' { modName } = '''this''';</code>) | ||
* print: 打印日志 | * print: 打印日志 | ||
* extend: '''js 'extend(Base, ..., {})' = java 'new Base(...) {}'''' | * extend: '''js '<nowiki/>'''<code>extend(Base, ..., {})</code>'''<nowiki/>' = java '<nowiki/>'''<code>new Base(...) {}</code>'''<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 解构复制] === | ||
'''cosnt''' { a, b } = { a: 1, b: 2 }; | <code>'''cosnt''' { a, b } '''=''' { a: 1, b: 2 };</code> | ||
=== 特殊语法 === | === 特殊语法 === | ||
====== '''new''' xxx''/* functionName */'' ( ''/* args */'' ) { ''/* code */'' } ====== | ====== '''new''' xxx''/* functionName */'' ( ''/* args */'' ) { ''/* code */'' } ====== | ||
其实就是<code>xxx''/* functionName */'' '''(''' ''/* args */'' , { ''/* code */'' } ''')'''</code> | |||
在最后面传了一个对象 | 在最后面传了一个对象 | ||
所以你可以:<code>'''new''' extend(Block, "a block") {</code> | 所以你可以:<code>'''new''' extend('''Block''', "a block") {</code> | ||
<code>setBars() { print(this.barMap) }</code> | <code>setBars() { print(this.barMap) }</code> | ||
第32行: | 第32行: | ||
===== Getter & Setter ===== | ===== Getter & Setter ===== | ||
你可以使用 | 你可以使用<code>xxx.class</code>等价于<code>xxx.getClass()</code> | ||
* 注意: | * 注意:<code>Vars.class</code>获取到的是'''Class'''类,如果想要获取对应类对象 可以使用<code>Vars.__javaObject__</code> | ||
=== 一些小坑 === | === 一些小坑 === | ||
一个函数接受所有方法,例如: | 一个函数接受所有方法,例如: | ||
* extend(BulletType, { '''hit(b, x, y) {''' '''print(b) | * <code>extend(BulletType, {</code> | ||
* <code>'''hit(b, x, y) {''' '''print(b);''' '''}'''</code> | |||
* <code>}</code> | |||
''' | <code>BulletType#'''hit'''('''Bullet''' b)</code>和<code>BulletType#'''hit'''('''Bullet''' b, '''float''' x, '''float''' y)</code>都会调用上面的hit方法, | ||
所以x,y可能为undefined | 所以x,y可能为undefined |
2024年2月17日 (六) 21:47的版本
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) }
}
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