// 点击分享按钮 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
@白开水,好的,我试下,不过还有一个比较尴尬的事,就是sharedCanvas,的尺寸是在开放数据域里是只读的,不能修改,而且就是屏幕的尺寸,但是webGL1.0要求,纹理尺寸必须是2的幂,我只能在主域绘制sharedCanvas之前修改它的尺寸,这样一来,就算能绘制出来,也会变形的。。。。。。。。。这个何解!
{“errMsg”:“getUserCloudStorage:ok”,“KVDataList”:[{“key”:“score”,“value”:“9”}]}
{“errMsg”:“getFriendUserGameData:fail 系统错误,错误码:-2”}
@白开水, 个人数据取得到,好友数据取不到,请问这个系统错误码-2具体是什么原因呢?
@许敬,power-of-2 的解决方案,请直接搜索相关资料,这是 WebGL 自身的特性,与小程序无关。另外你在另一个帖子里的代码在将 sharedCanvas 上屏之前重设了 sharedCanvas 的宽高,重设 canvas 是会将 canvas 清空的。所以你得到了一个黑块。建议将设置 sharedCanvas 宽高的代码放到一开始去执行。
整理一下,所以应该是这样吗?
let openDataContext = wx.getOpenDataContext(); let sharedCanvas = openDataContext.canvas; let canvas = cc.game.canvas; let context = canvas.getContext( 'webgl' ); context.drawImage(sharedCanvas, 0, 0); |
但是这样的话我会报错:
cc.game.canvas.getContext(…).drawImage is not a function TypeError: cc.game.canvas.getContext(…).drawImage is not a function
而且我用了 Cocos Creator 的 camera 没办法不用 webgl 模式阿……