本文来自Cocos官方论坛,感谢「达闻西」的分享!
1. 引言
本来是自己写的笔记,想想还是发出来把,能让不少新手少走弯路,毕竟自己也是摸索了好久!以图片的形式,让大家更直观点!
微信小游戏API官方手册 https://developers.weixin.qq.com/minigame/dev/index.html?t=18122815
“写和读”:有“写”才有“读”!
“微信数据开放域”简称为:“开放域”,也可以叫“子域” “主项目”简称为:“主域”
都知道微信开放数据域,是微信为了保护用户的数据,而专门设置的一个独立的小项目!只能在开放域中,由微信它自己去调用开放域的API!
正因为如此,我们只能在开放域中获取微信好友等数据,然后在开放域中制作好我们想要的“展示界面”,诸如排行榜之类!
最终,开放域返回给我们主项目的,就是开放域主场景Canvas显示的“一幅图片”而已!
而这幅图片,会自动显示在我们主项目当中的,有组件WXSubContextView的Sprite节点里面!
2. 前提准备
主项目中,需要显示开放域数据的Sprite节点上,给其添加组件WXSubContextView,然后该Sprite节点会自动接收开放数据域返回的“图片”! PS:该Sprite节点的尺寸,需要和开放域中的Canvas一样,才不会被拉伸!!
注意:微信调用的这些开放域API,都是延迟执行的,数据并不是实时的!
所以,这些API都有自己的回调方法(success,fail,complete 等等),需等待其执行完后,再执行对应的回调,方能正常读写数据!详情,请查看微信小游戏API官方手册,开放数据那一部分!
3. 步骤解析
1、wx.postMessage
在主域的代码脚本中,必须先给开放域发送一些消息,即一些指令!这样开放域才能做出相应的回应,去执行我们想要执行的操作! wx.postMessage()
,看下图:
2、wx.onMessage
在开放域中,接收主域发送过来的消息指令(这里的代码可以写在start里面,也可以在onLoad里面) 接收到的消息指令,就是case 3,执行数据更新方法! wx.onMessage()
3、wx.setUserCloudStorage()
添加或更新用户微信托管数据,里面可指定需修改的数据项! wx.setUserCloudStorage()
KVDataList:只想添加或修改分数,就填分数该项的键值对! (当然,也可以同时改动多项键值对,只需在KVDataList里继续添加键值对即可,最好根据情况,给方法传进来多个参数,对应键值对)
4、wx.getFriendCloudStorage()
获取微信好友们的数据(制作排行榜等等) wx.getFriendCloudStorage()
4. 后记
由于只是记录一个流程,介绍简单的步骤,方便大家理解,所以很多代码地方都简化了,实际当中,肯定会有更多的细节和需求!
欢迎关注「奎特尔星球」公众号,欢迎大家投稿,来我们一起成长!
「奎特尔星球」微信公众号
「奎特尔星球」博客网站,建设中...