概念
开放数据域 是一个封闭、独立的 JavaScript 作用域。开放数据域主要作用就是获取用户的关系链数据,并且展示关系链数据
具体使用方法在官方文档已经非常详细了-》开放数据域本文只是做一个简单整理
具体的展示关系链数据,如何绘制排行榜,请查看另一篇文章
配置方法
1、新建开放数据域的代码目录,以myOpenDataContext为例,在目录下新建index.js作为开放数据的入口文件
2、在game.json中添加配置项 openDataContext
{
"deviceOrientation": "portrait",
"openDataContext": "src/myOpenDataContext"
}
开放数据域限制
1、主域和开放数据域中的代码不能相互 require
2、wx.getUserCloudStorage、wx.getFriendCloudStorage() 和 wx.getGroupCloudStorage() 只能在 开放数据域 中调用。
3、wx.setUserCloudStorage() 和 wx.removeUserCloudStorage() 可以同时在 主域 和开放数据域中调用。
4、开放数据中不能修改sharedCanvas的宽高,如有需要,请在上屏canvas修改sharedCanvas的宽高
5、sharedCanvas只能被上屏canvas渲染
6、开放数据域不能向主域发送消息
7、sharedCanvas 不能调用 toDataURL 和 getContext。
8、开放数据域的所有 canvas 只支持 2d 渲染模式
9、开放数据域的 Image 只能使用本地或微信 CDN 的图片,不能使用开发者自己服务器上的图片
主域限制
1、主域不能调用wx.getUserCloudStorage、wx.getFriendCloudStorage() 和 wx.getGroupCloudStorage() ,也就是说主域不能直接获取用户关系链数据,必须通过开放数据域获取,再渲染到sharedCanvas上
主域和开放数据域的通信
开放数据域不能向主域发送消息,主域可以调用开放数据域实例的postmassage()方法向开放数据域发送消息
// game.js
let openDataContext = wx.getOpenDataContext()
openDataContext.postMessage({
text: 'hello',
year: (new Date()).getFullYear()
})
在开放数据域中通过 wx.onMessage() 方法可以监听从主域发来的消息。
// src/myOpenDataContext/index.js
wx.onMessage(data => {
console.log(data)
/* {
text: 'hello',
year: 2018
} */
})
具体关于关系链数据的操作以及排行榜的绘制,请前往另一篇文章微信小游戏-关系链数据的使用
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。