[]关于微信小游戏的开放数据域,请问如何将开放数据域的canvas绘制到layaair的image上?

描述:为了实现好友排行榜功能,使用了微信的开放数据域,也看了官方提供的例子,但是那个例子中会在最终的包中放两份引擎的编译后的源码,即code.JS,最终会导致包大小超出上限,所以打算采用微信原生canvas作为开放数据域,主域使用layaair引擎

问题:现在已经获取了开放数据域的sharedCanvas,但是试了很多方法都没有办法将canvas绘制到image或主域的canvas上,希望能得到解答,多谢
 
// wxMgr.getOpenDataCanvas() //开放数据域canvas
// this.view.image_rank_list //要绘制的图片
// var rankTexture = new Laya.Texture(wxMgr.getOpenDataCanvas());
// rankTexture.bitmap.alwaysChange = true;//小游戏使用,非常费,每帧刷新
// console.log(rankTexture);
// var img = wxMgr.getOpenDataCanvas().toDataURL("image/png");
// this.view.image_rank_list.source = img;
// var canvas_2d_ctx = canvas.getContext('2d')
// canvas_2d_ctx.drawImage(wxMgr.getOpenDataCanvas(), 0, 0);
// Laya.Browser.context.drawImage(wxMgr.getOpenDataCanvas(), 0, 0);
// console.log(laya.renders.RenderContext);
// laya.renders.RenderContext.ctx.drawImage(wxMgr.getOpenDataCanvas(), 0, 0);
已邀请:

yung

赞同来自:

搜索一下sharedCanvas关键词试试

zhaodi0217

赞同来自:

怎么弄开放数据域,求解

。。

赞同来自:

sharedCanvas.width = width*pixelRatio;
sharedCanvas.height = height*pixelRatio;
sendMessage({ mission: Mission.RESIZE, width:width, height: height }); 
wx.onTouchStart(onTouchStart);
wx.onTouchMove(onTouchMove);
wx.onTouchEnd(onTouchEnd);
wx.onTouchCancel(onTouchCancel); 
var rankSprite2 = new Laya.Sprite();
rankSprite2.zOrder = 100;
Laya.stage.addChild(rankSprite2);
var texture = new Laya.Texture(sharedCanvas);
texture.bitmap.alwaysChange = true;
rankSprite2.graphics.drawTexture(texture, left*pixelRatio, top*pixelRatio, width*pixelRatio,height*pixelRatio);
 
 
这样在安卓上跑好卡啊

yung

赞同来自:

关于开放域,微信将来回提供新方法,在此之前暂时还没有更好的办法
目前实现机制是不断绘制canvas到主域里面,会比较卡
优化思路:alwaysChange只有在需要变化的时候设置为true,否则设置为false,比如鼠标经过的时候设置为true,否则就设置为false,这样既不影响功能,又能提高性能

要回复问题请先

商务合作
商务合作