Rank.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import { _decorator, assetManager, Component, ImageAsset, Label, Node, Sprite, SpriteFrame, Texture2D } from 'cc';
  2. import HTTPS, { NetPost } from '../MyFrame/HTTPS';
  3. const { ccclass, property } = _decorator;
  4. @ccclass('Rank')
  5. export class Rank extends Component {
  6. @property(Label)
  7. PageLabel: Label = null;
  8. @property(Node)
  9. Layout: Node = null;
  10. last_page = 1
  11. @property(SpriteFrame)
  12. defaultImage: SpriteFrame = null;
  13. close() {
  14. this.node.active = false
  15. }
  16. protected onEnable(): void {
  17. this.RequestRank(1)
  18. }
  19. UP() {
  20. let page = this.extractFirstNumberFromString(this.PageLabel.string)
  21. page -= 1
  22. if (page <= 1) {
  23. page = 1
  24. }
  25. this.PageLabel.string = `第 ${page} 页`
  26. this.RequestRank(page)
  27. }
  28. DOWN() {
  29. let page = this.extractFirstNumberFromString(this.PageLabel.string)
  30. page += 1
  31. if (page >= this.last_page) {
  32. page = this.last_page
  33. }
  34. this.PageLabel.string = `第 ${page} 页`
  35. this.RequestRank(page)
  36. }
  37. RequestRank(page: number) {
  38. //请求排行榜数据
  39. HTTPS.Instance.post(NetPost.ranking_list,
  40. {
  41. list_rows: 7,
  42. page: page,
  43. }).then((resp) => {
  44. console.error('请求排行榜数据成功');
  45. console.error(resp);
  46. this.last_page = resp.data.last_page
  47. this.Layout.children.forEach((item, index) => {
  48. let NickName = item.getChildByName("NickName")
  49. let Order = item.getChildByName("Order")
  50. let Score = item.getChildByName("Score")
  51. let image = item.getChildByName("image")
  52. if (resp.data.data[index]) {
  53. item.active = true
  54. Order.getComponent(Label).string = ((page - 1) * 7 + index + 1).toString()
  55. NickName.getComponent(Label).string = resp.data.data[index].nickname
  56. Score.getComponent(Label).string = resp.data.data[index].score.toString()
  57. if (resp.data.data[index].avatar != '') {
  58. assetManager.loadRemote<ImageAsset>(resp.data.data[index].avatar, { ext: '.png' }, function (err, ImageAsset) {
  59. if (!err && ImageAsset) {
  60. console.log(ImageAsset);
  61. let tex = new Texture2D()
  62. tex.image = ImageAsset
  63. let sp = new SpriteFrame()
  64. sp.texture = tex
  65. image.getComponent(Sprite).spriteFrame = sp;
  66. } else {
  67. console.log(err);
  68. }
  69. // ...
  70. });
  71. } else {
  72. image.getComponent(Sprite).spriteFrame = this.defaultImage;
  73. }
  74. } else {
  75. item.active = false
  76. }
  77. })
  78. })
  79. }
  80. extractFirstNumberFromString(input: string): number | null {
  81. const match = input.match(/\d+/);
  82. return match ? Number(match[0]) : null;
  83. }
  84. }