收藏
回答

小游戏在获取关系链时遇到无法显示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-26

    没结果吗?

    2018-03-26
    有用
    回复
  • 2018-03-26

    我也正在处理这个问题,发现上屏canvas没法像wx.createCanvas()创建的canvas那样使用,开放数据域没法使用引擎的api,请问下你的排行榜打算怎么做?


    2018-03-26
    有用
    回复
  • 白开水
    白开水
    2018-03-26

    错误提示翻译成中文就是:一个非安全的 Canvas 不能以 drawImage 的方式将一个安全的 Canvas 画到自己身上。


    在使用了开放数据域的情况下,安全 Canvas 只有两个:主域的上屏 Canvas 和主域与开放数据域共享的 sharedCanvas


    你代码中的错误在于 wx.createCanvas() 创建的并不是主域的上屏 Canvas 而只是一个普通的离屏 Canvas,即一个非安全 Canvas。因为你使用了 cocos 引擎。


    在整个小游戏代码中首次调用 wx.createCanvas() 创建的是上屏 Canvas,之后调用则创建的是离屏 Canvas。


    而你引入 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

    2018-03-26
    有用
    回复

正在加载...

登录 后发表内容