// 点击分享按钮 shareClicked: function () { if (cc.sys.platform === cc.sys.WECHAT_GAME) { var openDataContext = wx.getOpenDataContext() var sharedCanvas = openDataContext.canvas if (sharedCanvas) { cc.log ( "分享的面板存在" ) } var canvas = wx.createCanvas() var context = canvas.getContext( '2d' ) context.drawImage(sharedCanvas, 0, 0) cc.log ( "微信分享" ) } }, |
在使用cocos creator开发小游戏时,需要获取些用户信息来制作排行版,根据提供的 https://mp.weixin.qq.com/debug/wxagame/dev/tutorial/open-ability/open-data.html?t=2018323 中的教程,主域和开放数据域的相关配置已经配置完成,但最后需要调用时却给出这样的提示:
An unsecure canvas can't take an secure canvas as arugment of drawImage When using subcontext
没结果吗?
我也正在处理这个问题,发现上屏canvas没法像wx.createCanvas()创建的canvas那样使用,开放数据域没法使用引擎的api,请问下你的排行榜打算怎么做?
错误提示翻译成中文就是:一个非安全的 Canvas 不能以 drawImage 的方式将一个安全的 Canvas 画到自己身上。
在使用了开放数据域的情况下,安全 Canvas 只有两个:主域的上屏 Canvas 和主域与开放数据域共享的 sharedCanvas。
你代码中的错误在于 wx.createCanvas() 创建的并不是主域的上屏 Canvas 而只是一个普通的离屏 Canvas,即一个非安全 Canvas。因为你使用了 cocos 引擎。
而你引入 cocos 引擎后, cocos 早就在你的那句 wx.createCanvas() 之前调用过 wx.createCanvas(),创建了上屏 Canvas。
关于安全 Canvas 和非安全 Canvas 的概念,请参考教程文档。https://mp.weixin.qq.com/debug/wxagame/dev/tutorial/open-ability/open-data.html?t=2018323