page_levelchoose.ts 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { _decorator, Component, instantiate, Label, log, Node, PageView, Prefab } from 'cc';
  2. import { item_level } from './item_level';
  3. import { GDM } from '../dtta/JsonMgr';
  4. import { gamecfg } from '../dtta/interfaceMgr';
  5. const { ccclass, property } = _decorator;
  6. @ccclass('page_levelchoose')
  7. export class page_levelchoose extends Component {
  8. @property(PageView)
  9. pageview_chooselevel: PageView = null;
  10. @property(Label)
  11. txt_pagenum: Label = null;
  12. @property(Prefab)
  13. item_page: Prefab = null;
  14. @property(Prefab)
  15. item_level: Prefab = null;
  16. start() {
  17. this.txt_pagenum.string = (this.pageview_chooselevel.getCurrentPageIndex() + 1) + "/" + this.pageview_chooselevel.getPages().length;
  18. this.InitLevel();
  19. }
  20. OnClickExit() {
  21. this.node.destroy()
  22. }
  23. OnPageViewValueChanged(event, customEventData) {
  24. this.txt_pagenum.string = (this.pageview_chooselevel.getCurrentPageIndex() + 1) + "/" + this.pageview_chooselevel.getPages().length;
  25. }
  26. InitLevel() {
  27. let levelInfo: Array<Array<gamecfg>> = []
  28. let tmparr: Array<gamecfg> = []
  29. let data = GDM.gamecfgMgr.data
  30. if (GDM.gamecfgMgr.paixuLevelinfo.length > 0) {
  31. data = GDM.gamecfgMgr.paixuLevelinfo
  32. }
  33. // 正确的分组逻辑:先添加元素,再检查是否满
  34. for (let index = 0; index < data.length; index++) {
  35. const element = data[index]
  36. tmparr.push(element) // 先将元素加入临时数组
  37. if (tmparr.length === 6) { // 检查是否已满
  38. levelInfo.push(tmparr)
  39. tmparr = [] // 重置临时数组
  40. }
  41. }
  42. // 处理最后一批不满6个的元素
  43. if (tmparr.length > 0) {
  44. levelInfo.push(tmparr)
  45. }
  46. log(levelInfo)
  47. // 后续的页面生成逻辑保持不变
  48. for (let index = 0; index < levelInfo.length; index++) {
  49. const element = levelInfo[index]
  50. let node: Node = instantiate(this.item_page)
  51. this.pageview_chooselevel.addPage(node)
  52. for (let i = 0; i < element.length; i++) {
  53. const unit = element[i]
  54. let node_unit: Node = instantiate(this.item_level)
  55. node_unit.parent = node
  56. node_unit.getComponent(item_level).Init(unit, index * 6 + i)
  57. }
  58. }
  59. this.OnPageViewValueChanged(null, null)
  60. this.pageview_chooselevel.setCurrentPageIndex(0)
  61. }
  62. OnClickNext(event, customdate) {
  63. this.pageview_chooselevel.scrollToPage(this.pageview_chooselevel.getCurrentPageIndex() + Number(customdate), 0.5)
  64. }
  65. }