子域 index.js
let sharedCanvas = wx.getSharedCanvas();let context = sharedCanvas.getContext('2d');context.fillStyle = 'red';context.fillRect(0, 0, 100, 100);wx.onMessage(function (data) { console.log(data);});console.log("HERE"); |
game.json
{ "deviceOrientation": "portrait", "openDataContext": "src/ranking", "networkTimeout": { "request": 5000, "connectSocket": 5000, "uploadFile": 5000, "downloadFile": 5000 } } |
Cocos update 里面的内容①
let openDataContext = wx.getOpenDataContext();let sharedCanvas = openDataContext.canvas;let canvas = cc.game.canvas;let context = canvas.getContext('2d');context.drawImage(sharedCanvas, 0, 0); |
Cocos update 里面的内容②
let openDataContext = wx.getOpenDataContext();let sharedCanvas = openDataContext.canvas;if (!this.tex) { return;}this.tex.initWithElement(sharedCanvas);this.tex.handleLoadedTexture();this.subDomain.spriteFrame = new cc.SpriteFrame(this.tex); |
首先因为用 Cocos 创建一个项目作为 SubDomain 占用空间太大了,所以不得不放弃这种做法,试图自己去渲染上屏。
由于我用的是 WebGL 渲染,所以①里面会报错。但是因为我的小游戏用了 Camera,而 Cocos Creator 的 Canvas 模式不支持 Camera,所以我只能用 WebGL 了。
于是我后来尝试着结合 Cocos 的教程去用②的方法渲染上屏,但是很可惜也失败了……
请教各位我应该用什么办法才能把子域渲染上屏?

https://github.com/cocos-creator/creator-docs/blob/master/zh/publish/publish-wechatgame-sub-domain.md
可以看下 cocos creator 的文档,cocos 的使用问题也可尝试在 github 上咨询 cocos 团队
是如何解决的?我也遇到了这个问题
我参考 Cocos Creator 的范例文件(注意那个范例文件打开的时候默认没打开正确的 Scene,要手动去打开),然后项目设置里面把不要的东西都去掉,体积勉强达标。
注意 Console 中的【Failed to load resource: the server responded with a status of 404 (Not Found)】和【subcontext code not found】可以忽略。