版本2.1.1.1
現在Laya的開放域比較好用了。
新建開放域項目,里面直接有個排行榜的示例。

直接發布

得到較少的文件,復制這些文件,粘貼到主項目bin/openDataContext下。 (openDataContext文件夾需要自己創建)

並將開放域項目下libs/laya.opendata.js也復制到主項目bin/openDataContext/libs下 (libs文件夾需要自己創建)

復制開放域項目下的laya/assets/test的排行榜圖片復制到主項目的bin/test下,否則開放域找不到圖片地址下載

最終微信項目文件如下

設置主項目release/wxgame/game.json,增加 "openDataContext":"openDataContext"

主項目的TestScene中創建一個組件WXOpenDataViewer。 在Basics/UI下倒數第3個。(直接右鍵-創建UI組件,是沒有這個組件的)
這個WxOpenDataViewer是顯示開放域的,你可以理解為這是一個電視,里面播着開放域的界面。

主域通知開放域顯示排行榜
GameUI.ts:
onEnable(): void {
Laya.loader.load(["res/atlas/test.atlas"],Laya.Handler.create(this,()=>{
//使用接口將圖集透傳到子域
Laya.MiniAdpter.sendAtlasToOpenDataContext("res/atlas/test.atlas");
}));
}
開放域接收消息,並顯示排行榜
Main.ts:
class Main {
constructor() {
//設置子域
Laya.isWXOpenDataContext = true;
Laya.isWXPosMsg = true;
//根據IDE設置初始化引擎
Laya.init(GameConfig.width, GameConfig.height,false);
Laya.stage.scaleMode = GameConfig.scaleMode;
Laya.stage.screenMode = GameConfig.screenMode;
Laya.stage.alignV = GameConfig.alignV;
Laya.stage.alignH = GameConfig.alignH;
// 關於透傳接口,請參考: https://ldc2.layabox.com/doc/?nav=zh-ts-5-0-7
if(Laya.Browser.onMiniGame)
wx.onMessage(function(data){
console.log("子域收到消息:", data);
if(data.url == "res/atlas/test.atlas" ){
Laya.loader.load("res/atlas/test.atlas",Laya.Handler.create(this,this.onComplete));
}
}.bind(this));
else
Laya.loader.load("res/atlas/test.atlas",Laya.Handler.create(this,this.onComplete));
}
onComplete(): void {
//初始化rank排行榜
var rank = new BigRank();
//初始化
rank.init();
}
}
把開放域的BigRank的this.getFriendData();注釋掉

主項目發布,微信開發者工具打開,最終顯示

