在根据官方文档实现排行榜功能时,
官方文档: https://mp.weixin.qq.com/debug/wxagame/dev/tutorial/open-ability/open-data.html?t=2018323
做到这一步没有问题
let odc = wx.getOpenDataContext();
odc.postMessage({… });
let sharedCanvas = odc.canvas
做到这一步出现了问题
var context = cc.game.canvas.getContext(‘2d’);
context.drawImage(sharedCanvas, 0, 0)
问题在于getContext函数,错误是
TypeError: Cannot set property ‘proto’ of null
at HTMLCanvasElement.n.getContext (WAGame.js:8)
这个原函数是:
function (e,t){if((0,f.getCanvasConfig)(this).isSharedCanvas&&GameGlobal.__isSubContext)return null;var n=i.call(this,e,t);return/2d|webgl/.test(e)&&(n.proto=b(e)),g.set(n,this),Object.defineProperty(n,“canvas”,{value:this,configurable:!1,writeable:!1}),n}
此外我试了一下,只要在main.js里面,不启动cocos主程序,即删除 cc.game.run(option, onStart);这一行,就不会有问题,可以在屏幕上绘制sharedCanvas里面的内容。
所以我觉得,应该是cocos占用了主canvas。另外其实即使我能在主canvas上绘制sharedCanvas也没有办法实现排行榜功能。因为新绘制的内容会立刻被cocos底层的渲染逻辑覆盖掉。
请问官方能不能提供一个绘制sharedCanvas到主屏,或者绘制sharedCanvas到一个sprite上的方法?