// 点击分享按钮 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输出,新建了一个项目,没有使用引擎,同样无法输出到上屏Canvas上,请看我其它帖子描述
引擎应该都是会不断地重绘上屏画布的,所以也要不断地将 sharedCanvas 重绘到上屏画布上。
如果想要清除掉 sharedCanvas,那 clear 掉画布重绘一次就好了
是的, Cocos构建时渲染模式默认是webGL,所以
canvas.getContext(
'2d'
)会报错,改渲染模式为canvas,就可以了;
但我现在卡在了画出sharedCanvas 但会立刻消失,就是一闪而过,不知道什么情况。。
至于如何关闭,我想应该就是重新绘制一个空的sharedCanvas 吧
你上屏Canvas 用的是webGL,要用
canvas.getContext(
'webgl'
),'webgl'和‘2d’是不同的渲染模式
但是通过cc.game.canvas获取到上屏canvas后,使用
canvas.getContext(
'2d'
)获取的context确是空的?
@许敬
我也在试,现在webGL方式绘制,很繁琐,我的也还没有绘制成功
谢谢 @许敬
如何关闭或者说清除绘制在上屏canvas上的shareCanvas呢
cocos 里获取上屏Canvas 的代码是 var canvas = cc.game.canvas;
@刘彬 意思是cocos中可以直接使用下面的代码?
//直接使用canvas,不用初始化?
var
context = canvas.getContext(
'2d'
)
context.drawImage(sharedCanvas, 0, 0)
我还有一个问题,shareCanvas是已图片形式画到上屏canvas的,应该怎么关掉shareCanvas,回到画它之前的界面呢
上屏canvas Cocos已经帮你创建好了,并且暴露了一个全局变量canvas,所以你的代码的那局wx.createCanvas()不要就行了