接着上一篇:白鹭小游戏接微信排行榜(2)
(1.)设置微信排行榜数据,并提交的微信服务端;
(2.).获取自己包括好友数据,转成对应的json个数替换给totalGroup这个引用;
(3.)调用打开排行榜函数;
1.设置微信排行榜数据,并提交的微信服务端;
(1.)打开egretwing在Platform.ts里面加一个wx类如下:
declare const wx:{
/**
* 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。
*/
login(object: { success: (res: any) => void, fail: (res: any) => void, complete: (res: any) => void }): void;
/**
* 拉取当前用户所有同玩好友的托管数据。该接口只可在开放数据域下使用
*/
getFriendCloudStorage(object?: { keyList?: any[], success?: (res: any) => void, fail?: (res: any) => void, complete?: (res: any) => void }): void;
/**
* 在小游戏是通过群分享卡片打开的情况下,可以通过调用该接口获取群同玩成员的游戏数据。该接口只可在开放数据域下使用。
*/
getGroupCloudStorage(object: { shareTicket: string, keyList: any[], success?: (res: any) => void, fail?: (res: any) => void, complete?: (res: any) => void }): void;
/**
* 获取当前用户托管数据当中对应 key 的数据。该接口只可在开放数据域下使用
*/
getUserCloudStorage(object: { keyList: any[], success: (res: any) => void, fail: (res: any) => void, complete: (res: any) => void }): void;
/**
* 删除用户托管数据当中对应 key 的数据。
*/
removeUserCloudStorage(object: { keyList: any[], success: (res: any) => void, fail: (res: any) => void, complete: (res: any) => void }): void;
/**
* 对用户托管数据进行写数据操作,允许同时写多组 KV 数据。
*/
setUserCloudStorage(object: { KVDataList: any[], success?: (res: any) => void, fail?: (res: any) => void, complete?: (res: any) => void }): void;
}
上面的wx类里面的方法,大家可以参考微信小程序API自己添加;
(2.)打开Main.ts脚本在之前的打开微信排行的函数上面,写存储数据的代码;
博主将:key设为myscore;value为999;【童鞋们:key|value自己随意定义奥,只要待会拿值的时候,匹配对应的key就行了】
【注意:设置自己信息的代码;微信允许我们可以不在开放域执行】
2.获取自己包括好友数据,转成对应的json个数替换给totalGroup这个引用;
EE:发布微信开发者平台的时候的坑:
【博主第一篇说过:egret publish --target wxgame这个命令】
命令意思为[白鹭发布平台为微信小游戏];
注意:一个项目,我们一旦自己手动点击按钮, 发布过一次微信小游戏后,下一次只要改了egretwing里面的代码,编译后;
童鞋们就要用这个命令去发布微信游戏;为什么呢?【坑:】因为如果你还是点击手动发布;他会覆盖或者兴建一个新的微信小游戏项目,会将你的在微信开发者工具,里面改好的[自动生成的]index.js覆盖掉,这样,index.js里面童鞋们写的代码就白写了;而用刚刚那个命令则不会覆盖;
所以发布过一次后,接下来要用刚刚的命令发布编译;
(1.)到开放域去获取自己和微信好友的排行榜信息
在index.js空白处中加入如下代码:
代码意义看博主加的注释;
/***********************************博主999 *************************************** */
//获取微信数据
function getWXData(){
let valuedata;
//调用获取微信数据的函数【注意:包括了自己】
let datas = wx.getFriendCloudStorage({
keyList: ["myscore"],//通过直接定义的key拿用户数据
success: function (res) {
valuedata = res.data;//获取到的数据
}
});
setTimeout(() => {
console.error("DA ", valuedata);//打印输出测试
//构造真实的用户totalGroup
var list = [];
for (let i = 0; i < valuedata.length; i++) {
let data = valuedata[i];
spawnPerson(data);
var p = spawnPerson(data);
list.push(p);
}
totalGroup = list;
//按照分数大小排序
list.sort(function (m, n) {
if (parseInt(m.scroes) < parseInt(n.scroes)) return 1
else if (parseInt(m.scroes) > parseInt(n.scroes)) return -1
else return 0
});
for (let k = 0; k < list.length; k++) {
var temp = k + 1;
list[k].key = temp;
}
}, 500);
}
let updateIcon = [];
//将用户头像链接转为icon
function drawIcon(data){
if (data.avatarUrl != "") {
let updateIcond = updateIcon[data.avatarUrl];
if (!updateIcond) {
let avator = wx.createImage();
avator.src = data.avatarUrl;
return avator;
}
return assets.icon;
}
}
//实例化用户对象模型
function spawnPerson(data) {
if (data.avatarUrl != "") {
let dataa = data.KVDataList;//用户数据
var tempscore=0;
for (let j = 0; j < dataa.length; j++) {
tempscore = dataa[j].value;
}
var p=new Person();
//给数据模型赋值
p.key = index;
p.name=data.nickname;//用户称呼
var temp = drawIcon(data);
p.url = temp;
p.scroes = tempscore;
index++;
return p;
}
}
var index=1;
//数据模型【模仿totalGroup的结构】
function Person(){
var key;
var name;
var url;
var scroes;
}
/***********************************博主999 *************************************** */
在将index.js 238行【显示系统UI的改为data.url】
最后将默认的index.js,接收到open消息位置代码,改成如下形式:
保存 运行~;
终于~可以看到;真实的排行榜了~ o(* ̄▽ ̄*)o
觉得有用的童鞋,欢迎关注支持博主;谢谢~
有任何问题,都可以私信博主~ o(* ̄▽ ̄*)o;