希望在看这篇博客之前你已经仔细的了解过微信的开放(封闭)数据域了;
微信的开放数据域是为了保护微信的数据安全,这里面一旦涉及到 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) 
 
 
 
