微信小游戏获取关系链数据的问题

参照 https://mp.weixin.qq.com/debug/wxagame/dev/tutorial/open-ability/open-data.html?t=2018323 来获取微信关系链,在需要调用sharedCanvas是却报了如下的提示,不知道有谁遇到过这样的问题?如何解决的?

An unsecure canvas can’t take an secure canvas as arugment of drawImage When using subcontext

1赞

同求助。也遇到同样的问题了。

现在的cocos和排行榜功能不兼容的问题在于:我们不能把sharedCanvas上的东西画在上屏。 我也在等官方的回复

改成这样就可以了

        var openDataContext = wx.getOpenDataContext()
        var sharedCanvas = openDataContext.canvas

        var canvas = cc.game.canvas
        if (canvas) {
            cc.log ("画布可用")
        }

        var context = canvas.getContext('2d')
        if (context) {
            cc.log ("上下文可用")
            context.drawImage(sharedCanvas, 0, 0)
        }

不过我这边还是没能调用其分享页,还正在查

Cocos构建的时候默认的渲染模式是webgl,不是canvas,所以canvas.getContext(‘2d’)是不行的,得用canvas.getContext(‘webgl’)才行。不过如果你构建时渲染模式改为canvas就可以用canvas.getContext(‘2d’)了

嗯。这个我也解决了,卡在画不出来,强制改为canvas渲染可以不报错,应该是绘制到sharecanvas上了,但是cocos上调用全局变量canvas绘制share canvas不能显示出来,不知道哪里出错了,程序也不会报错TAT~

我现在是能画出来了,但是是一闪而过,闪一下就消失了~~

怎么画出来的呀

同问,你们是怎么画出share canvas的内容啊,主域和开放数据域是怎么进行同步的?

我也感觉到就是这个问题,发布成Canvas渲染版本,然后按微信官方的做法来,结果是不报错但是也看不到效果

你这边是怎么画出来的?我这里连画都没画出来

@jare 这个有什么解决方案的吗? 而且我使用如下代码也依旧是没有画出来

        var canvas = cc.game.canvas
        if (canvas) {
            cc.log ("画布可用")
            console.log(canvas.width, canvas.height)
        }

        var context = canvas.getContext('2d')
        if (context) {
            cc.log ("上下文可用")
            // context.drawImage(sharedCanvas, 100, 100)
            context.fillStyle = 'red'
            context.fillRect(0, 0, 100, 100)
        }

看我的另一篇帖子

嗯嗯,根据你的做法,可以把数据显示出来了。谢谢哈~~

你是把数据用微信小游戏的API绘制在sharedCanvas上,然后cocos只负责显示sharedCanvas么?

Cocos构建的时候渲染模式改成canvas,再用楼上贴的方法不就能画出来了么,我之前说的一闪而过的问题处理方法就是要不停的画,才不会消失

请问如何将内容绘制到sharedCanvas上?

我这里只画了个红色的框,没其他东西诶

开放区域得到数据:
let sharedCanvas = wx.getSharedCanvas()
function drawRankList(data) {
let sharedCanvas = wx.getSharedCanvas();
let context = sharedCanvas.getContext(‘2d’);
context.font = “30px impact”;
context.fillStyle = “#960”;
context.textAlign = ‘center’;
data.forEach((item, index) => {
console.log(item);
let str = item.key + " : " + item.value;
context.fillText(str, 100, 75 * (index + 1), 400);
});
}

主区域绘制:

let sharedCanvas = this.openDataContext.canvas;
var texture = new cc.Texture2D();
texture.initWithElement(sharedCanvas);
texture.handleLoadedTexture();
let sp = new cc.SpriteFrame(texture);
this.showPic(sp);

drawRankList 这里面的data哪里传进去。