收藏
回答

小游戏在获取关系链时遇到无法显示sharedCanvas的情况

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小游戏 Bug wx.getOpenDataContext 工具 6.6.5 1.02.1803210
// 点击分享按钮
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

回答关注问题邀请回答
收藏

23 个回答

  • 许敬
    许敬
    2018-03-29

    @白开水,我为了测试开放数据域的sharedCanvas输出,新建了一个项目,没有使用引擎,同样无法输出到上屏Canvas上,请看我其它帖子描述

    2018-03-29
    有用
    回复
  • 白开水
    白开水
    2018-03-29
    1. 引擎应该都是会不断地重绘上屏画布的,所以也要不断地将 sharedCanvas 重绘到上屏画布上。

    2. 如果想要清除掉 sharedCanvas,那 clear 掉画布重绘一次就好了

    2018-03-29
    有用
    回复
  • 刘彬
    刘彬
    2018-03-29

    是的, Cocos构建时渲染模式默认是webGL,所以canvas.getContext('2d')会报错,改渲染模式为canvas,就可以了;

    但我现在卡在了画出sharedCanvas 但会立刻消失,就是一闪而过,不知道什么情况。。

    至于如何关闭,我想应该就是重新绘制一个空的sharedCanvas  吧



    2018-03-29
    有用
    回复
  • 许敬
    许敬
    2018-03-28

    你上屏Canvas 用的是webGL,要用canvas.getContext('webgl'),'webgl'和‘2d’是不同的渲染模式

    2018-03-28
    有用
    回复
  • Aether
    Aether
    2018-03-28

    但是通过cc.game.canvas获取到上屏canvas后,使用canvas.getContext('2d')获取的context确是空的?

    @许敬


    2018-03-28
    有用
    回复
  • 许敬
    许敬
    2018-03-28

    我也在试,现在webGL方式绘制,很繁琐,我的也还没有绘制成功

    2018-03-28
    有用
    回复
  • 田顺建
    田顺建
    2018-03-28

    谢谢 @许敬


    如何关闭或者说清除绘制在上屏canvas上的shareCanvas呢

    2018-03-28
    有用
    回复
  • 许敬
    许敬
    2018-03-28

    cocos 里获取上屏Canvas 的代码是 var canvas = cc.game.canvas;

    2018-03-28
    有用
    回复
  • 田顺建
    田顺建
    2018-03-28

    @刘彬 意思是cocos中可以直接使用下面的代码?


    //直接使用canvas,不用初始化?
    var context = canvas.getContext('2d')
    context.drawImage(sharedCanvas, 0, 0)


    我还有一个问题,shareCanvas是已图片形式画到上屏canvas的,应该怎么关掉shareCanvas,回到画它之前的界面呢

    2018-03-28
    有用
    回复
  • 刘彬
    刘彬
    2018-03-27

    上屏canvas Cocos已经帮你创建好了,并且暴露了一个全局变量canvas,所以你的代码的那局wx.createCanvas()不要就行了

    2018-03-27
    有用
    回复

正在加载...

登录 后发表内容