- 为什么小游戏在微信开发者工具中能运行但预览却是黑屏
利用小游戏模板,删去了多余的部分,在main.js中写了几句简单的代码,然后在game.js中new Main(),实现在屏幕上显示触发touchstart事件的次数,两个文件的代码如下,在开发者工具中能运行实现功能,但通过开发者工具的预览功能,微信扫面后运行是一片黑屏,搞不明白。 //++++++++++++++++++++++++main.js+++++++++++++++++++++++++ let ctx = canvas.getContext('2d'); /** * 游戏主函数 */ export default class Main { constructor() { this.counter=0; this.initEvent(); window.requestAnimationFrame(this.loop.bind(this),canvas); } //事件监听初始化 initEvent() { canvas.addEventListener('touchstart', ((e) => { e.preventDefault(); this.counter++; }).bind(this)) } // 实现游戏帧循环,输出触摸事件次数 loop() { ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.fillText(this.counter, 100, 100); window.requestAnimationFrame(this.loop.bind(this),canvas); } } //++++++++++++++++++++++++game.js+++++++++++++++++++++++++ import './js/libs/weapp-adapter' import './js/libs/symbol' import Main from './js/main' new Main()
2018-01-05 - 关于小游戏建立快速启动模板里面的问题
在飞机大战的模板中的pool.js文件中,有以下代码 const __ = { poolDic: Symbol('poolDic') } /** * 简易的对象池实现 * 用于对象的存贮和重复使用 * 可以有效减少对象创建开销和避免频繁的垃圾回收 * 提高游戏性能 */ export default class Pool { constructor() { this[__.poolDic] = {} } /** * 根据对象标识符 * 获取对应的对象池 */ getPoolBySign(name) { return this[__.poolDic][name] || ( this[__.poolDic][name] = [] ) } …… } 请问Pool类的构造函数中this[__.poolDic] = {}这段代码怎么理解?__.poolDic是由Symbol('poolDic')得到的 唯一标识,this[__.poolDic]是什么呢?是一个数组?getPoolBySign方法中的this[__.poolDic][name]又怎么理解是一个2维数组?
2018-01-04