微信小游戏开放数据域及排行榜的使用
好久没有写博客了,距离上一次博客,已经有了近半年之久,这段时间发生了太多的事,当然,这些不是今天的主题,接下来我们主要讲一讲微信小游戏开放数据域的使用,以及如果制作排行榜。
首先,要进行知识的普及,这方面肯定是官方文档最靠谱啊,所以先上官方链接https://developers./minigame/dev/tutorial/open-ability/open-data.html(微信对于开放数据域的解释),/creator/manual/zh/publish/publish-wechatgame-sub-domain.html?h=开放(creator对于接入微信小游戏开放数据域的方式及demo)。
其实这两篇文档看过之后,你基本就可以搞定了,那我为啥还写这篇呢,因为我喜欢技(zhuang)术(bi)啊。后面我们对此进行一些内容的扩展,以便能够让学习者能够尽快的上手,并能够用于项目中。
首先,我的creator是2.0.1版本,因为在2.0.1以下两种版本上屏方式不同(不明白上屏概念,请阅读微信的那篇文档),所以我们在文档中都会表述,以便大家可以选择适合自己的版本。
废话不再多说,代码开撸。
第一步,创建一个空工程,进行简单的布局,创建一个精灵,用于展示排行榜展示的区域,设置宽高,这个宽高很重要,因为你的开放数据域就是要创建这么大,demo中就为600*600在2.0.1版本中,选择添加组件->添加其他组件->WXSubContextView组件,即可完成上屏注册。
低版本的就比较坑了,需要使用代码注册一下,代码如下:
这个和官方的demo是一致的,不多做解释了。(我也解释不清楚,啦啦啦,你打我啊~~)
我们知道,排行版的数据是微信的数据,那么第一步就是要先把我们需要的数据上传给微信服务器那边,wx.setUserCloudStorage()微信提供了这个函数,以便能够将数据上传,函数定义(https://developers./minigame/dev/document/open-api/data/wx.setUserCloudStorage.html)有兴趣的可以看一下,现在,就在需要上传数据的地方,上传数据,这里需要注意,必须依据微信定义的数据结构才能使用,不然会报错--无效的KVDataList。
这样,数据就可以上传了。
当然,我们是希望能够控制排行榜的展示与否,那么,当然是点击按钮的时候再展示出来,所以,我们需要在主域向子域中发送消息,告诉他,你可以展示了,不听话当心打你小屁屁哦。
至此,主域的内容算是完成,他的使命已经终结了,接下来,新创建一个工程,作为子域工程。
创建新工程,将scene大小改为600*600(上文已说明),同时,将maincamera的backgroundcolor属性中的A改为0,否则他的背景将是黑色,如果你需要其他的背景透明度,请自行调整数值。
既然是排行榜,当然首选的是scrollview控件,对此控件的用法可以参考官方文档或者百度一下,这里只说一下注意点:第一点,在content下挂载layout组件,resizemode选择container,另外,没有第二点。啦啦啦~~不皮一下不开心啊。
对于列表中的每一个item,当然是预制啦,这里就不多做解释,只说一个问题,那就是它的顶部要在0以下,就是说,整个item的坐标都是Y为负值。
好,准备工作已完成,下面又到了光辉的撸代码的时候了。
首先,我们要接收从主域发过来的消息,以便于知道要去展示排行榜。
好,接收到了消息,那么就可以去做操作啦。
接下来,自然是去请求数据:
拿到数据自然是去展示啦,这里就不贴代码了,毕竟只是对预制的内容赋值,但是有两点需要注意的,这次是真的有两点:第一点,当你的列表不能充满的时候,会出现划不动的情况,这个时候请设置layout的resizemode为NONE,其他情况不变,第二点,展示头像的方法需要拿到外面调用,如果写在循环体中,会出现只展示最后一个头像的问题,具体原因我不清楚,如有大神了解原因,烦请告知。(不明白我说的,请下载源码查看)
好,接下来就要构建发布了,因为使用的是wxAPI,所以必须到微信平台运行,主域的构建就是
子域的构建要把名称改为你写的开放数据域代码目录的名称,并更改发布路径到主域的发布路径下:
如此,在主域的wechatgame下就可以看到相应的目录了。
最后,在微信的开发者工具中打开主域工程,就能看到想要的效果啦。
这个数据比较少,你也可以模拟数据看看效果。
因为时间问题,文档不能够详细的说全(一个字,懒),大家有意见敬请提出,反正我也不改,啦啦啦,打我啊~~
资源链接:/download/qq_16224121/10649218,要5个积分哦