1 新建子域项目
点击文件->新建项目->开放域项目
2 主域向子域发送资源
Laya.MiniAdpter.sendAtlasToOpenDataContext("res/atlas/local.atlas");
Laya.MiniAdpter.sendJsonDataToDataContext("prefab/myIcon.json");
3 子域处理消息,接收资源
wx.onMessage(function(data){
console.log("wx onmessage ",data)
if(data.url == "prefab/myIcon.json"||data.url =="res/atlas/local.atlas"){
mark++
if (mark==2){
Laya.loader.load(["prefab/myIcon.json","res/atlas/local.atlas"],Laya.Handler.create(this,this.onComplete));
}
}
}.bind(this));
pbjs -t static-module -w commonjs -o bundlel.js UccBinServer2.proto
4 主域添加微信控件
在主域要显示微信开放数据的地方,添加控件WXOpenDataViewer
界面初始化的时候,向子域发送消息,控制子域显示信息
this.touchSceneView.imgWxData.postMsg({ type: "GetUserInfo" })
5 子域去微信获取数据
子域收到消息,根据收到消息类型,去微信获取不同的数据
/**
* 接收信息
* @param message 收到的主域传过来的信息
*/
private recevieData(message):void{
console.log("recevieData",message)
var _$this =this;
var type:String = message.type;
switch(type)
{
case "GetUserInfo":{
this.getImgData()
break
}
case "GetRankInfo":{
GameDataManager.OpenId = message.openId
GameDataManager.RankIndex = message.RankType
if (GameDataManager.RankIndex==1) {
GameDataManager.GamePScore = message.selfscore
}else {
GameDataManager.GameSScore = message.selfscore
}
this.getRankData(message.selfscore)
break
}
case "GetWorldInfo":{
GameDataManager.RankIndex = message.RankType
GameDataManager.MyRank = message.rank
if (GameDataManager.RankIndex==1) {
GameDataManager.GamePScore = message.selfscore
}else {
GameDataManager.GameSScore = message.selfscore
}
this.getWorldRankData(message.data)
break
}
default:
break;
}
}
6 子域发布
主域的bin目录新建open文件夹
子域点击发布按钮,将编译的文件拷贝到主域的bin/open文件夹下
7 主域发布
主域编译之后,在主域的game.json文件中添加"openDataContext": "./open"配置
注意:
Laya的微信控件一个场景只能一个,因为控件初始化的时候回向子域发送一些初始化信息,例如控件的大小等,这部分由laya封装好了。如果同一个场景有多个微信控件,会导致显示内容显示错误。