https://mp.weixin.qq.com/s/kYIdnHv-C5KuR9snekPNBg
https://mp.weixin.qq.com/s/PA2sfcGxNfix7sJ8ysy9AA
官方文档。
https://www.jianshu.com/p/600543c4be42
比较可以的一个文章。
步骤:
1.在platform中添加一个变量。opendatacontext,是一个自己封装的类的实例
2.自己类中
封装一个方法。
createDisplayObject(type, width, height) :egret.Bitmap{
let sharedCanvas = window["sharedCanvas"] as any;//可以理解为得到wx的sharedCanvas,作为Bitmap,然后在添加到自己的舞台上
const bitmapdata = new egret.BitmapData(sharedCanvas);
bitmapdata.$deleteSource = false;
const texture = new egret.Texture();
texture._setBitmapData(bitmapdata);
const bitmap = new egret.Bitmap(texture);//得到Bitmap
bitmap.width = width;
bitmap.height = height;
if (egret.Capabilities.renderMode == "webgl") {
const renderContext = (egret as any).wxgame.WebGLRenderContext.getInstance();
const context = renderContext.context;
////需要用到最新的微信版本
////调用其接口WebGLRenderingContext.wxBindCanvasTexture(number texture, Canvas canvas)
////如果没有该接口,会进行如下处理,保证画面渲染正确,但会占用内存。
if (!context.wxBindCanvasTexture) {
egret.startTick((timeStarmp) => {
egret.WebGLUtils.deleteWebGLTexture(bitmapdata.webGLTexture);
bitmapdata.webGLTexture = null;
return false;
}, this);
}
}
return bitmap;
}
3.把开放域理解为一个节点。在需要的地方添加它就可以。例如:this.addChild(开放域).
添加进来之后需要向子域发消息。
//显示开放域数据
this.bitmap = plathform.openDataContext.createDisplayObject(null, this.stage.stageWidth, this.stage.stageHeight);//这里创建的就是整个开放域界面的大小,最好与开放域所获得的宽高一致,也可以从主域传入到子域。两边最好保持一致
this.addChild(this.bitmap);
//主域向子域发送数据
plathform.openDataContext.postMessage({
isRanking: this.isRankClick,
text: "egret",
year: (new Date()).getFullYear(),
command: "open"
});
4.egret在opendata文件下的index.js中已经写好了一个排行榜。自己可以做修改。