// Learn TypeScript: // - https://docs.cocos.com/creator/manual/en/scripting/typescript.html // Learn Attribute: // - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html import { SaveDataManager } from "../../component/SaveDataManager"; import { tMgr, WindowName } from "../../Global"; import { GamePlayTable, TableName } from "../../kernel/table/TableDefine"; import LevelRankItem from "../../prefabs/LeveRankItem"; import { UIBase } from "../UIBase"; import { UIManager } from "../UIManager"; const { ccclass, property } = cc._decorator; @ccclass export default class UILevelRank extends UIBase { @property(cc.Prefab) itemPrefab: cc.Prefab = null; private _inited: boolean = false; constructor() { super(); this._usePopUpEffect = false; this._useCloseEffect = false; } //#region lifecycle protected start(): void { let levelNum = (tMgr.getConfig(TableName.GAME_PLAY, 22) as GamePlayTable).Value; let container = cc.find('scrollView/view/content/grid', this.node); for (let i = 0; i < levelNum; ++i) { let row = Math.floor(i / 5); let col = i % 5; let reverse: boolean = false; if (row % 2 == 1) { reverse = true; } let item = cc.instantiate(this.itemPrefab); container.addChild(item); item.getComponent(LevelRankItem).setLineLayer(cc.find('scrollView/view/content/line', this.node)); if (reverse) { item.getComponent(LevelRankItem).setLevelId(i + 5 + col * -2); //傻逼非要做些无意义又不好做的排序 } else { item.getComponent(LevelRankItem).setLevelId(i + 1); } } this._inited = true; } protected onDestroy(): void { UIManager.ins.cache.delete(WindowName.LEVEL_RANK); // 此界面添加在场景中,会随场景一起销毁,将UIManager中的缓存也删除,避免后续取到被销毁的缓存 } protected onEnable(): void { if (this._inited) { this.scrollToCur(); } else { this.scheduleOnce(this.scrollToCur.bind(this), 0); } } //#endregion //#region public method //#endregion //#region event onBtnCloseClick() { // UIManager.ins.closeWindow(WindowName.LEVEL_RANK); this.node.removeFromParent(); } //#endregion //#region private method private scrollToCur() { let totalRow = Math.ceil((tMgr.getConfig(TableName.GAME_PLAY, 22) as GamePlayTable).Value / 5); let curRow = Math.ceil((SaveDataManager.ins.runtimeData.curLevel + 1) / 5) - 1; this.node.getChildByName('scrollView').getComponent(cc.ScrollView).scrollTo(cc.v2(0, 1 - curRow / totalRow), 0.5, true); } //#endregion }