二 .白鹭小游戏接微信排行榜(3)

接着上一篇:白鹭小游戏接微信排行榜(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;

猜你喜欢

转载自blog.csdn.net/aiwo521/article/details/83995469