一直以来,`web.sdk.js`都是通过以下方式加载快游戏的。 ```html ``` 在大部分的游戏中也是没有问题的,由于`web.sdk.js`中存在大量的异步加载逻辑,因此将`main.js`定义为模块,并在代码最前面补充加载等待是对游戏原代码侵入较小的一种方案,而且恰恰是模块,因此顶级 await 也就非常顺理成章了。 ```js await window.qg.ready(); ``` 直到遇到下面某款游戏的入口(代码片段) - 阅读剩余部分 -
- 阅读剩余部分 -
本质上,快游戏框架是基于V8引擎魔改出来的,因此天然支持`require`函数,但在 Web 中实现这个功能就不简单了,第一版的方案是想着将`main.js`作为模块在最顶级加载,然后通过将所有的`require`调用都改为`await`。 ```js await require("./libs/min/laya.core.min.js"); await require("./libs/min/laya.ani.min.js"); await require("./libs/min/laya.ui.min.js"); ``` ```js async function require(url) { const script = document.createElement("script"); script.type = "text/javascript"; script.async = false; script.defer = false; script.src = url; await new Promise((resolve, reject) => { script.onload = () => { script.remove(); resolve(); }; script.onerror = () => { script.remove(); reject(); }; document.body.constructor.prototype.appendChild.apply(document.body, [script]); }); } ``` 一开始,这个方案也是走得通的,对于一些简单的游戏改的方便,加载也是没啥问题的,但是随着接触的快游戏越来越多,这个方案就越发难走下去,主要有两个问题: - 阅读剩余部分 -
在使用 PushMe 推送 HTML 消息时,由于 PushMe 默认生成的消息摘要是自动提取的,在很多时候这个摘要并没有起到什么作用,特别是有表格等复杂数据时,如下图。  然后想着试下利用摘要不解析 HTML 的这个特性,使用一段`display:none`的文字作为消息摘要,在点进去正文时,解析 HTML 后也会看不见这段摘要。 刚开始尝试使用超多的` `将正文部分推到很后的地方,摘要为摘要,正文为正文,但是自动提取出来的摘要会将连续空格转为单个,还是会导致正文出现在摘要里。 - 阅读剩余部分 -
快游戏/快应用其实和普通的应用是类似的,除了不用安装以及环境不一样外,他们都是有“包”的概念,也就是启动快游戏后都是从包内读取并加载资源(js、其他资源)。 内容加载一般分几种情况: 1. 入口js、框架js等,一般是直接通过 require 方法加载 2. 固定资源(部分js、配置文件、初始资源等)一般是通过文件系统的 readFile 从包中加载 3. 热资源(动态资源、动态js等)一般是通过 xhr 远程加载 4. 某些框架也是会通过 readFile 进行远程加载 其中除了 readFile 加载本地资源外,require、readFile 远程加载都存在巨多坑,后面会专门讲。 - 阅读剩余部分 -
在补充了近千行sdk代码后,也是顺利无报错的完美运行XX宿舍。 当然这小一千行的代码可能甚至只覆盖 1/10 都不到,满级完成度代码量在一两万行应该是差不多的,目前已完成: - 桌面图标 API - 广告 API(4/7) - 文件系统 API - 跑通单个游戏所需的琐碎 API(未整理)   - 阅读剩余部分 -
收一个 Reqable 永久版订阅