import { _decorator, Component, instantiate, Label, log, Node, PageView, Prefab } from 'cc'; import { item_level } from './item_level'; import { GDM } from '../dtta/JsonMgr'; import { gamecfg } from '../dtta/interfaceMgr'; const { ccclass, property } = _decorator; @ccclass('page_levelchoose') export class page_levelchoose extends Component { @property(PageView) pageview_chooselevel: PageView = null; @property(Label) txt_pagenum: Label = null; @property(Prefab) item_page: Prefab = null; @property(Prefab) item_level: Prefab = null; start() { this.txt_pagenum.string = (this.pageview_chooselevel.getCurrentPageIndex() + 1) + "/" + this.pageview_chooselevel.getPages().length; this.InitLevel(); } OnClickExit() { this.node.destroy() } OnPageViewValueChanged(event, customEventData) { this.txt_pagenum.string = (this.pageview_chooselevel.getCurrentPageIndex() + 1) + "/" + this.pageview_chooselevel.getPages().length; } InitLevel() { let levelInfo: Array> = [] let tmparr: Array = [] let data = GDM.gamecfgMgr.data if (GDM.gamecfgMgr.paixuLevelinfo.length > 0) { data = GDM.gamecfgMgr.paixuLevelinfo } // 正确的分组逻辑:先添加元素,再检查是否满 for (let index = 0; index < data.length; index++) { const element = data[index] tmparr.push(element) // 先将元素加入临时数组 if (tmparr.length === 6) { // 检查是否已满 levelInfo.push(tmparr) tmparr = [] // 重置临时数组 } } // 处理最后一批不满6个的元素 if (tmparr.length > 0) { levelInfo.push(tmparr) } log(levelInfo) // 后续的页面生成逻辑保持不变 for (let index = 0; index < levelInfo.length; index++) { const element = levelInfo[index] let node: Node = instantiate(this.item_page) this.pageview_chooselevel.addPage(node) for (let i = 0; i < element.length; i++) { const unit = element[i] let node_unit: Node = instantiate(this.item_level) node_unit.parent = node node_unit.getComponent(item_level).Init(unit, index * 6 + i) } } this.OnPageViewValueChanged(null, null) this.pageview_chooselevel.setCurrentPageIndex(0) } OnClickNext(event, customdate) { this.pageview_chooselevel.scrollToPage(this.pageview_chooselevel.getCurrentPageIndex() + Number(customdate), 0.5) } }