import { _decorator, Component, Node, Label, Prefab, instantiate, UITransform, Sprite, SpriteFrame } from 'cc'; import { IFDataSource, InfiniteList } from '../../core/InfiniteList/InfiniteList'; import { Http } from '../../core/net/Http'; import { ResourcesUtils } from '../../core/resourceManager/ResourcesUtils'; import { g } from '../../Data/g'; import { FriendItem } from '../../Item/FriendItem'; const { ccclass, property } = _decorator; /**查看好友 */ @ccclass('FriendWindow') export class FriendWindow extends Component implements IFDataSource { @property({ type: Sprite, tooltip: "标题" }) titleSprite: Sprite; @property({ type: InfiniteList, tooltip: "好友列表" }) list: InfiniteList; @property({ type: Prefab, tooltip: "Item预制体" }) item: Prefab; @property({ type: Http, tooltip: "Http服务" }) http: Http; private prefabHeight: number = 0; private data = []; start() { } public async onOpenHandler(friendlv: number = 0) { let url = `Images/Title/lv${friendlv + 1}FriendTitle/spriteFrame`; if (friendlv > 4) { url = `Images/Title/wdmy/spriteFrame`; } let img = await ResourcesUtils.load(url, SpriteFrame, this.titleSprite.node); this.titleSprite.spriteFrame = img; if (friendlv == 5 && g.gameData.myFissionData.g1Members.length == 0) { let result = await this.http.send("/api/fission/GetFission"); if (!result.code) { g.gameData.myFissionData = result.data.fissionDatas; } } friendlv = friendlv > 4 ? 0 : friendlv; this.data = g.gameData.myFissionData[`g${friendlv + 1}Members`]; for (let i = 0; i < this.data.length; i++) { this.data[i].friendLv = friendlv; } let prefab = instantiate(this.item); this.prefabHeight = prefab.getComponent(UITransform).height; this.list.Init(this); } //#region IFDataSource public GetCellData(dataIndex: number): any { return this.data[dataIndex]; } public GetCellNumber(): number { return this.data.length; } public GetCellSize(index: number): number { return this.prefabHeight; } public GetCellView(index: number): FriendItem { let node = instantiate(this.item); return node.getComponent(FriendItem); } public GetCellIdentifer(index: number): string { return "FriendItem"; } }