SelectLevel.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import { _decorator, Button, Component, Node, director, PageView, resources, SpriteAtlas, error, Asset, Sprite, UITransform, SpriteFrame } from 'cc';
  2. import { GameInfo } from './GameInfo';
  3. const { ccclass, property } = _decorator;
  4. @ccclass('SelectLevel')
  5. export class SelectLevel extends Component {
  6. selectTheme: Node = null;
  7. pageViewLv: Node = null;
  8. btnStart: Node = null;
  9. btnBack: Node = null;
  10. private _themeBgLeft: Node = null;
  11. private _themeBgRight: Node = null;
  12. protected onLoad(): void {
  13. this.btnStart = this.node.getChildByPath("UI_SelectLv/BtnStart");
  14. this.btnBack = this.node.getChildByPath("UI_SelectLv/BtnBack");
  15. this.selectTheme = this.node.parent.getChildByPath("SelectTheme");
  16. this.pageViewLv = this.node.getChildByName("PageViewLv");
  17. this._themeBgLeft = this.node.getChildByName("Theme_bgLeft");
  18. this._themeBgRight = this.node.getChildByName("Theme_bgRight");
  19. }
  20. protected onEnable(): void {
  21. this._loadLvRes();
  22. this.btnStart.getComponent(Button).interactable = true;
  23. }
  24. start() {
  25. //this._LoadLvRes();
  26. this.btnStart.on(Button.EventType.CLICK,this.onBtnStart,this);
  27. this.btnBack.on(Button.EventType.CLICK,this.onBtnBack,this);
  28. this.pageViewLv.on(PageView.EventType.PAGE_TURNING,()=>{
  29. //滑动过程当中 “开始游戏” 按钮无效
  30. this.btnStart.getComponent(Button).enabled = false;
  31. })
  32. this.pageViewLv.on(PageView.EventType.SCROLL_ENDED,()=>{
  33. //滑动结束 “开始按钮” 生效
  34. this.btnStart.getComponent(Button).enabled = true;
  35. })
  36. //true=>当前主题都可以玩,“开始按钮”不用禁用
  37. if(GameInfo.Instance.isAllLvUnlocked()){
  38. return;
  39. }
  40. this.pageViewLv.on(PageView.EventType.SCROLL_ENDED,()=>{
  41. const index = this.pageViewLv.getComponent(PageView).curPageIdx + 1;
  42. this.btnStart.getComponent(Button).interactable = (index <= GameInfo.Instance.UnLockLv);
  43. // if(index > GameInfo.Instance.UnLockLv){
  44. // this.btnStart.getComponent(Button).interactable = false;
  45. // } else {
  46. // this.btnStart.getComponent(Button).interactable = true;
  47. // }
  48. })
  49. }
  50. onBtnStart(){
  51. GameInfo.Instance.CurLv = this.pageViewLv.getComponent(PageView).curPageIdx + 1;
  52. director.loadScene("MainScene");
  53. }
  54. onBtnBack(){
  55. //清空pageView的content下的节点
  56. this.pageViewLv.getComponent(PageView).removeAllPages();
  57. //选关节点隐藏,选主题节点激活
  58. if(this.node.active){
  59. if(!this.selectTheme.active){
  60. this.selectTheme.active = true;
  61. }
  62. this.node.active = false;
  63. }
  64. }
  65. //资源导入
  66. private _loadLvRes(){
  67. const theme = GameInfo.Instance.CurTheme;
  68. resources.load("Res/ThemeMap/Theme0" + theme ,SpriteAtlas,(error:Error | null,asset:SpriteAtlas)=>{
  69. if(error){
  70. console.error("No found Theme0" + theme);
  71. } else {
  72. for (const frame of asset.getSpriteFrames()) {
  73. if(frame.name.includes("_map")){
  74. this.pageViewLv.getComponent(PageView).addPage(this._setNode(frame));
  75. }
  76. }
  77. this._themeBgLeft.getComponent(Sprite).spriteFrame = asset.getSpriteFrame("Theme"+ theme + "_bgLeft");
  78. this._themeBgRight.getComponent(Sprite).spriteFrame = asset.getSpriteFrame("Theme" + theme + "_bgRight");
  79. }
  80. })
  81. }
  82. //设置PageView的页面
  83. private _setNode(frame: SpriteFrame): Node{
  84. const node = new Node();
  85. node.addComponent(Sprite);
  86. node.getComponent(UITransform).setContentSize(500, 300);
  87. node.getComponent(Sprite).sizeMode = Sprite.SizeMode.CUSTOM;
  88. node.getComponent(Sprite).type = Sprite.Type.SLICED;
  89. node.getComponent(Sprite).spriteFrame = frame;
  90. return node;
  91. }
  92. update(deltaTime: number) {
  93. }
  94. }