作者: 何永峰;
标签: 微信小游戏,主域,开放域
什么是主域,什么是开放域?
主域
简单来说就是你本来游戏的项目
开放域
利用微信关系链做游戏的排行榜
开放域与主域分开的原因
总的来说就是主域算一个项目(主要游戏部分),而开放域算是利用微信好友关系的制作的排行榜。你可能会问为什么要分开做这么麻烦,emmmm,这个问微信。在我直观的层面上来说,应该是微信不能让开发者轻易调用关系链,拿到对应的信息做某些不合法的事情。所以要好好保护这关系链只能做这种分割项目的处理。
如何在主域中调用开放域
let openDataContext = wx.getOpenDataContext()//获取开放域
//然后向开放域发送信息(告诉开放域你要出来了)
openDataContext.postMessage({
command : 'open',//参数先这么写,等下告诉你有什么用
year: (new Date()).getFullYear()//这个不用管
})
开放域在我们的项目哪里?
我们先找到在哪里编写代码?是的,这个问题我一开始也很懵逼,我用一张图来简单说一下吧
openDataContent这个目录 即使你egret项目编译了也不会改变,简单的说它就是另一个项目(第二次说明了)
现在我们找到了写代码的地方,我们就下手吧。
开放域里面做些什么?
既然我们在主域中发送消息,肯定是在开放域接受信息
wx.onMessage((data) => {
if (data.command == 'loadRes') {
//收到这个通知我们要加载图片资源
preloadAssets();
console.log('加载资源')
} else if (data.command == 'open') {
//这里是接收打开开放域的通知
//获取canvas渲染上下文
console.log('打开开放域')
} else if (data.command == 'close') {
//关闭开放域
} else if (data.command == 'last') {
//这里暂时不需要清楚
last();
} else if (data.command == 'next') {
//这里也是
next();主域如何调用开放域?
}
})
loadRes:接受加载图片的信息
open:打开开放域的信息
close:关闭子域(其实子域是关闭不了的,它会与某种隐藏的状态处于您的游戏之中,不过视觉上是不会影响到用户体验的)
主域发送过来,子域接受信息,自己制定规则,便可以随便操作子域