切换搜索
搜索
切换菜单
通知
切换个人菜单
查看“JavaScript Mod”的源代码
来自像素工厂维基百科-mindustry wiki
查看
阅读
查看源代码
查看历史
associated-pages
页面
讨论
更多操作
←
JavaScript Mod
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
=== Mindustry的[https://developer.mozilla.org/zh-CN/docs/Web/javascript JS] === Mindustry使用: [https://github.com/Anuken/Rhino Rhino] 类似于[https://nodejs.cn/ node.js],它没有''<code>window</code>,<code>document</code>''等一系列变量 Rhino并没有完全支持es6的语法 [[https://www.runoob.com/js/js-tutorial.html 菜鸟教程]] | [[https://developer.mozilla.org/zh-CN/docs/Web/javascript MDN]] Mindustry提供了一下全局变量:[https://github.com/Anuken/Mindustry/blob/d79a306970598ae8d7fa29102d1ce2aa0653e5ed/core/assets/scripts/global.js global.js] 一些常用的变量 * <code>scriptName</code>: 当前脚本的名称(这会随脚本的变化而变化,建议: <code>'''const''' { scriptName } = '''this''';</code> ) * <code>modName</code>: 当前Mod的名称(这会随mod的变化而变化,建议: <code>'''const''' { modName } = '''this''';</code> ) * <code>print</code>: 打印日志 * <code>extend</code>: === 关于[https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment 解构赋值] === <code>'''cosnt''' { a, b } '''=''' { a: 1, b: 2 };</code> === 特殊语法 === ==== '''new''' F''/* functionName */'' ( ''/* args */'' ) { ''/* code */'' } ==== 其实就是<code>F''/* functionName */'''''(''' ''/* args */'' , { ''/* code */'' } ''')'''</code> 在最后面传了一个对象 所以你可以: '''new''' extend('''Block''', "a block") { setBars() { print('''this'''.barMap) } } ==== Getter & Setter ==== '''Getter''': 你可以使用<code>xxx.class</code>等价于<code>xxx.getClass()</code> * 注意:<code>Vars.class</code>获取到的是'''Class'''类(或者直接报错),如果想要获取对应类对象 可以使用<code>Vars.__javaObject__</code> '''Setter''': 你可以使用<code>cell.element = xxx</code>,这等价于<code>cell.setElement(xxx)</code> === 一些小坑 === ====== 一个函数接受所有方法 ====== extend(BulletType, { hit(b, x, y) { print(b); } } <code>BulletType#'''hit'''('''Bullet''' b)</code>和<code>BulletType#'''hit'''('''Bullet''' b, '''float''' x, '''float''' y)</code>都会调用上面的hit方法, 所以<code>x</code>,<code>y</code>可能为<code>undefined</code> ===== <code>for ... of ...</code> 不能迭代java的Iterable ===== 可以使用下面的代码 定义函数 function *itep(map){ let iterator = map.iterator() // 这里用try是因为hasNext在有的类中是字段 try { while (true) yield iterator.next() } catch(e) {} } 使用方法 let map = new IntMap() map.put(11, 3931) for (let entry of new iter(map)) { // new 不能省 print(entry) } ====== Protected方法获取 ====== <pre> // $p 指 Packages $p.rhino.NativeJavaObject( $p.rhino.ImporterTopLevel(Vars.mods.scripts.context), // 用于刷新缓存 Core.assets, // 对象 $p.arc.assets.AssetManager, // 类对象 true // 是否包含protected ).addAsset // 获得protected </pre>
返回
JavaScript Mod
。