内容提要
本文介绍如何用 Electron 替换 TyranoScript 官方启动器 tyranorider:先备份 package.json,安装 Electron 并配置 main.js 加载 index.html,即可运行游戏并获得新版开发者工具和 ES6 支持;打包使用 electron-builder,需补装 fs-extra 和 jquery,pack 用于测试,dist 生成安装包;还可用 remote 模块实现全屏。
延伸解读
替换启动器的可行性
TyranoScript 框架本身几乎不依赖官方启动器 tyranorider,其功能基本都包含在 js 文件中,因此可以摆脱官方启动器,在任何基于现代浏览器内核的程序上运行。但直接使用 Chrome 浏览器会因限制本地文件 ajax 请求而需要额外配置。
Electron 带来的开发便利
官方启动器 tyranorider 使用的 NW.js 版本较低,内置开发者工具老旧。替换为 Electron 后,开发者工具基本保持最新状态,调试效率大幅提升,同时可以在 TyranoScript 中使用 ES6 新语法。
打包注意事项
使用 electron-builder 打包时,由于代码中通过 require 引用了 fs-extra 和 jquery,需要额外安装这两个依赖,否则会报错。建议先用 npm run pack 打包到 dist 文件夹测试,确认无误后再用 npm run dist 生成各系统安装包。
全屏功能的实现
在 Electron 中实现全屏,需要在渲染进程获取窗口对象。借助 require('electron').remote 可以调用主进程方法,例如 remote.getCurrentWindow().setFullScreen(true)。即使在渲染进程,也能直接用 require 获取 npm 安装的依赖。
Q&A
如何用 Electron 替换 TyranoScript 的官方启动器 tyranorider?
先备份 package.json,然后安装 Electron:npm i -D electron。修改 package.json 的 main 为 main.js,并添加 start 脚本:"start": "electron ."。创建 main.js,使用 BrowserWindow 加载 index.html,并打开开发者工具。运行 npm start 即可启动游戏。
为什么 TyranoScript 可以脱离官方启动器运行?
因为 TyranoScript 框架基本不依赖启动器功能,全部功能都包含在 js 文件中,只有极少量使用 NW.js API。因此它可以在任何基于现代浏览器内核的程序上运行,甚至直接用 Chrome 浏览器打开(但需配置以允许本地文件 ajax 请求)。
用 Electron 替换启动器后有什么好处?
可以获得最新版的开发者工具,调试效率大幅提升;同时可以在 TyranoScript 中使用 ES6 新语法。
如何用 electron-builder 打包 TyranoScript 游戏?
安装 electron-builder:npm i -D electron-builder。在 package.json 的 scripts 中添加:"pack": "electron-builder --dir" 和 "dist": "electron-builder"。由于代码中 require 了 fs-extra 和 jquery,需先安装这两个依赖。运行 npm run pack 测试打包,npm run dist 生成安装包。
electron-builder 的 pack 和 dist 命令有什么区别?
pack 只打包到 dist 文件夹,适合测试;dist 会直接打包成各个系统的安装包。推荐先用 pack 检查是否有报错,再使用 dist。
替换启动器后如何实现全屏功能?
在渲染进程中通过 require('electron').remote 调用主进程方法:require('electron').remote.getCurrentWindow().setFullScreen(true)。注意即使在渲染进程也可以直接用 require 拿到 npm 安装的依赖。