微信小游戏实战--cocos creator实现wordle游戏(八)

这篇教程是该游戏的最后一篇教程,介绍如何实现排行榜功能。设计了两个排行榜:世界排行榜,好友排行榜。完成代码在此

世界排行榜

根据上一篇教程我们已经收集到了玩家的战绩数据,只需要按照按照胜利局数查询出来排列即可。

首先还是创建云函数来获取玩家战绩数据,创建方法参考上一篇教程。代码如下:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const db = cloud.database()
  return await db.collection('score').field({
    userName: true,
    avatarUrl: true,
    wincount: true
  }).orderBy('wincount','desc')
  .limit(event.limitnumber)
  .get({
    success: (res)=> {
      return {
        errMSG: '',
        data: res.data
      }
    },
    fail: (res)=> {
      return {
        errMsg: res.errMsg
      }
    }
  });
}

需要注意的是,微信云函数返回的数据最多返回100条,所以在limit那里你设置超过100的话就没什么作用,也只能返回100条数据。要想获取超过100条数据,就只能分多次调用然后拼接数据了。这里,主要返回了用户的头像,昵称和胜利局数。云函数创建后记得一定要部署上去。

然后在wxCloud.ts里面添加调用代码:

    //获取世界排行榜
    public getWorldRank (limit: number,callback) {
        wx.cloud.callFunction({
            name:"getWorldRank",//云函数名字
            data:{
              limitnumber: limit
            },
            success: (res) => {
                callback(res.result.data);
            },
            fail: (res) => {
              console.log("请求失败!",res.result.errMsg)
            }
        })   
    }

制作显示页面:页面也是设计为prefab。结果如下:

1、 rank是根节点:尺寸为720 X 1280。挂载一个prefab(名称是Item,用于显示玩家的头像、昵称和胜利局数。)挂载一个widget组件(设置上下左右边距是0)。

2、mask是Sptite(精灵):尺寸720 X 1280,颜色透明度设置为0,挂载一个widget组件(上下左右边距设置为0),挂载一个button组件(不用设置点击事件)。这样设计的目的是实现一个遮罩,防止用户的点击事件穿透过去。

3、content是Sprite(精灵):尺寸640 X 1020。颜色设置为豆沙绿和游戏背景图一致。

4、Layout-title是Layout组件:设置为横向布局。包含4个button组件(“世界排行榜”,“好友排行榜”,“关闭”,还有一个设置颜色透明作为占位用的)。

5、friend、world都是Sprite(精灵):尺寸640 X 960.都包含一个ScrollView组件用于显示排行榜信息。

 由于玩家排行信息是一行一行显示的,所以将显示玩家信息的组件设计为prefab,用于动态加载显示:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大宝贱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值