小游戏中的开放数据域可用来保存游戏数据可实现排行榜等功能,以下是我在项目中的实现方式提供参考:
需要注意的是主域虽然可以操作sharedCanvas,但是主域得不到数据主域只能向开放域传递一些基本数據,只能画一些背景边框数据只能在开放域中画。
下面就我觉得比较几个重要的地方说下:
这里排行榜的显示我用了两个Canvas
我把排行榜嘚静态数据绘制在SharedCanvas中,这里说的静态数据是指:排行榜的背景标题,文字用户进入后显示头像等等。
第二个canvas是我自己创建的canvas是用来繪制用户排行信息,比如用户排名用户分数,用户头像等等
我们把用户排行信息绘制到自建的canvas上之后,还需要通过SharedCanvas把他显示在屏幕上
// 排序函数(降序)
排行数据的滑动采用原生***手势滑动方法实现的通过***onTouchMove方法得到滑动距离,清除数据区域后根据这个距离重新繪制数据区域,在***结束后判断滑动的上限和下限设置下就可以了
// 触摸移动第一次触发的位置
开放域index.js的完整代码如下:
// 排序函数(降序) // 触摸移动第一次触发的位置 // 因为头像绘制异步的问题,需要重新绘制 //drawImage(画布距离左,距离上宽度缩放,高度缩放,渲染起始点X渲染起始点Y,横向缩放显示,纵向缩放);
以上是我用Phaser进行的最初的测试版本,经后来的开发测试发现:开放域中的nickName,avatarUrl,openId,存储的数据等是可以传递到主域中使用的不知道这个是不是2018微信最新的版本的一个Bug,2018微信最新的版本官方api 中说的是数据只能在开放域中使用是对数据的一种保护,那么既然开放域中的这些重要数据都可以传递出来那么2018微信最新的版本又是在保护什么样的数据呢?这里如果有大神知道的话可以下方评論或者邮箱留言告诉我哦!
//中间 数据保存数组中省略...