#一、不要用插件方式导入
浏览器模式下,插件代码的变量会自动注册成全局变量,其他模块直接用就是。编译到微信小游戏,会包装一层,就没法用全局变量。所以叫不以插件方式导入,在最后用module.exports导出变量,要用的时候require一下再用。以前proto文件转成js文件以插件方式导入会出问题,这样处理就好了。
#二、atob、btoa微信小游戏不支持
用第三方的base64库,在项目根目录执行:
npm install --save js-base64
要用的地方引用该模块:
var Base64 = require('js-base64').Base64;
Base64.decode('ZGFua29nYWk=');
#三、FormData不支持,HTTP接口不一样
微信小游戏HTTP接口不一样,也不支持FormData,所以HTTP请求接口整理两个模块,根据cc.sys.platform === cc.sys.WECHAT_GAME初始化接口,同时兼容微信小游戏和浏览器。
#四、eval不支持
如果第三方库用到,很可能有问题,protobufjs的inquire函数用到了,但编解码还是可以用。
#五、"click"事件好像有问题
原来的项目,整理到微信工具里运行,"click"事件的node点击体验经常有问题,一会儿单击就可以,一会儿需要双击才能生效,不知道是微信工具的问题还是cocos creator的锅。类似这样的"click"监听事件可能有问题:
this.gameStartBtn.on("click", this.gameStart, this);
#六、项目里不要有"game.js"文件
windows的cocos creator编译会有问题,mac的cocos creator编译后正常,web模式编译都没问题。估计是cocos的锅。
#七、cc.loader.loadRes可能没有回调
在机器内存紧张的情况下,非常容易遇到,连场景也切不了,也没任何报错。在内存充足的情况下,基本都是正常的,可能是微信工具的锅。
#八、WebSocket问题
虽然腾讯官方文档给的WebSocket API和浏览器的不太一致:https://mp.weixin.qq.com/debug/wxagame/dev/document/network/websocket/wx.connectSocket.html?t=201814,但实际上可以浏览器一样的API操作,也就是类似var ws = new WebSocket(url)这样去连接,但最多只能建立两个WebSocket连接。另外,微信小游戏的发送数据(ws.send)只支持string和arraybuffer,而浏览器可以直接发送Uint8Array。