希望在看這篇博客之前你已經仔細的了解過微信的開放(封閉)數據域了;
微信的開放數據域是為了保護微信的數據安全,這里面一旦涉及到 wx.getgrounp wx.get.... wx.get ....
都將被保護起來,如何保護它允許你在一個封閉的區域里面讓他顯示出來但是不允許你對其數據進行保存;
那么兩個區域如何進行聯系就是通過post.message()
你可以理解為 主域:投影儀的板子; 子域:投影儀的內容
在你申請打開之前需要set一下你的數據
主域代碼
GameOver.prototype.OnRank = function() {
if (Laya.Browser.onWeiXin) {
var rank = new Rank();//主域的背景什么的
var open = wx.getOpenDataContext(); //子域溝通
open.postMessage("open"); //傳值
var rankTexture = new Laya.Texture(Laya.Browser.window.sharedCanvas); //微信排行榜只能讓你通過這個畫板 把子域上顯示的內容給畫出來
rankTexture.bitmap.alwaysChange = true;
Laya.timer.once(600, this, function() { //設置延遲是因為渲染需要時間 不延遲會造成剛開始顯示的時候不正確
this.curtain = new Laya.Sprite(); //投影儀的圖片;
rank.addChild(this.
curtain); //這里面的rank可以是你主域的一個空界面l;或者是你主域的一個彈窗
Laya.stage.addChild(rank);
this.curtain.zOrder = 10086;
this.curtain.graphics.drawTexture(rankTexture, 50, 150, Laya.stage.width, Laya.stage.height);
rankTexture.bitmap.alwaysChange = true; //小游戲使用,非常費,每幀刷新
})
}
};
你可以在子域里面把排行榜的背景畫好; 也可以在主域里面把排行榜的的背景畫好。
子域代碼:
if (Laya.Browser.onWeiXin) {
console.log("子域進來了")
wx.onMessage(function(dat) { //通過監聽主域傳過來的消息執行不同的命令
switch (dat) {
case "open":
{
GameMain.rankView = new RankView();
GameMain.rankView.scaleX = 0.46;
GameMain.rankView.scaleY = 0.43;
Laya.stage.addChild(GameMain.rankView);
break;
}
case "close":
{
if (!GameMain.rankView) {
GameMain.rankView = new RankView();
}
GameMain.rankView.removeSelf();
break;
}
}
});
流程總結:
1.做兩個項目。子域項目可以通過調用wx里獲取好友信息的方法獲取好友數據;
2.將主項目發布成小游戲后,在根目錄新建一個文件夾將子域項目發布成小游戲到里面;
(其中注意 在最開始的小游戲適配的那里Laya.minadpater(true,xxx)
