FriendWindow.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { _decorator, Component, Node, Label, Prefab, instantiate, UITransform, Sprite, SpriteFrame } from 'cc';
  2. import { IFDataSource, InfiniteList } from '../../core/InfiniteList/InfiniteList';
  3. import { Http } from '../../core/net/Http';
  4. import { ResourcesUtils } from '../../core/resourceManager/ResourcesUtils';
  5. import { g } from '../../Data/g';
  6. import { FriendItem } from '../../Item/FriendItem';
  7. const { ccclass, property } = _decorator;
  8. /**查看好友 */
  9. @ccclass('FriendWindow')
  10. export class FriendWindow extends Component implements IFDataSource {
  11. @property({ type: Sprite, tooltip: "标题" })
  12. titleSprite: Sprite;
  13. @property({ type: InfiniteList, tooltip: "好友列表" })
  14. list: InfiniteList;
  15. @property({ type: Prefab, tooltip: "Item预制体" })
  16. item: Prefab;
  17. @property({ type: Http, tooltip: "Http服务" })
  18. http: Http;
  19. private prefabHeight: number = 0;
  20. private data = [];
  21. start() {
  22. }
  23. public async onOpenHandler(friendlv: number = 0) {
  24. let url = `Images/Title/lv${friendlv + 1}FriendTitle/spriteFrame`;
  25. if (friendlv > 4) {
  26. url = `Images/Title/wdmy/spriteFrame`;
  27. }
  28. let img = await ResourcesUtils.load<SpriteFrame>(url, SpriteFrame, this.titleSprite.node);
  29. this.titleSprite.spriteFrame = img;
  30. if (friendlv == 5 && g.gameData.myFissionData.g1Members.length == 0) {
  31. let result = await this.http.send("/api/fission/GetFission");
  32. if (!result.code) {
  33. g.gameData.myFissionData = result.data.fissionDatas;
  34. }
  35. }
  36. friendlv = friendlv > 4 ? 0 : friendlv;
  37. this.data = g.gameData.myFissionData[`g${friendlv + 1}Members`];
  38. for (let i = 0; i < this.data.length; i++) {
  39. this.data[i].friendLv = friendlv;
  40. }
  41. let prefab = instantiate(this.item);
  42. this.prefabHeight = prefab.getComponent(UITransform).height;
  43. this.list.Init(this);
  44. }
  45. //#region IFDataSource
  46. public GetCellData(dataIndex: number): any {
  47. return this.data[dataIndex];
  48. }
  49. public GetCellNumber(): number {
  50. return this.data.length;
  51. }
  52. public GetCellSize(index: number): number {
  53. return this.prefabHeight;
  54. }
  55. public GetCellView(index: number): FriendItem {
  56. let node = instantiate(this.item);
  57. return node.getComponent(FriendItem);
  58. }
  59. public GetCellIdentifer(index: number): string {
  60. return "FriendItem";
  61. }
  62. }