123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- import { _decorator, Component, Node ,Button,director, PageView, NodeEventType, Prefab, instantiate, Animation, Vec3} from 'cc';
- import { GameInfo } from './GameInfo';
- import { resMgr } from './Frames/ResourcesMgr';
- import { dataMgr } from './Frames/DataManager';
- const { ccclass, property } = _decorator;
- @ccclass('SelectScene')
- export class SelectScene extends Component {
- @property(Node)
- pageView: Node = null;
- @property(Prefab)
- effectPrefab: Prefab = null;
- @property(Node)
- selectLv: Node = null;
- @property(Node)
- selectTheme: Node = null;
- currentPageIndex:number = null;
- totalPages:number = null;
- //解锁的主题数
- unLockedTheme:number = null;
- //锁的图标
- locked: Node = null;
- btnRight: Node = null;
- btnLeft: Node = null;
- start() {
- // console.log("resMgr:" + resMgr)
- // console.log("dataMgr:" + dataMgr.getAllDataByName("GameResPath"));
- //总页数
- this.totalPages = this.pageView.getComponent(PageView).getPages().length;
- //当前索引值
- this.currentPageIndex = this.pageView.getComponent(PageView).getCurrentPageIndex();
- const buttonConfigs = [
- {name: "SelectTheme/UI_SelectTheme/BtnHome" , handler : this.onBtnHome},
- {name: "UIPublic/BtnHelp" , handler : this.onBtnHelp},
- {name: "SelectTheme/UI_SelectTheme/BtnLeft" , handler : this.onBtnLeft},
- {name: "SelectTheme/UI_SelectTheme/BtnRight" , handler : this.onBtnRight}
- ]
- buttonConfigs.forEach(config =>{
- let button = this.node.getChildByPath(config.name);
- if(button){
- button.on(Button.EventType.CLICK,config.handler,this);
- } else{
- console.warn(`Button not found: ${config.name}`);
- }
- //button.on(Button.EventType.CLICK,config.handler,this);
- })
- // let BtnHome = this.node.getChildByPath("SelectTheme/UI_SelectTheme/BtnHome");
- // BtnHome.on(Button.EventType.CLICK,this.onBtnHome,this);
- // let BtnHelp = this.node.getChildByPath("UIPublic/BtnHelp");
- // BtnHelp.on(Button.EventType.CLICK,this.onBtnHelp,this);
- // let BtnLeft = this.node.getChildByPath("SelectTheme/UI_SelectTheme/BtnLeft");
- // BtnLeft.on(Button.EventType.CLICK,this.onBtnLeft,this);
- // let BtnRight = this.node.getChildByPath("SelectTheme/UI_SelectTheme/BtnRight");
- // BtnRight.on(Button.EventType.CLICK,this.onBtnRight,this);
- let touchArea = this.node.getChildByPath("SelectTheme/TouchArea");
- touchArea.on(NodeEventType.TOUCH_START,this.onTouchStart,this);
- touchArea.on(NodeEventType.TOUCH_END,this.onTouchEnd,this);
-
- this.node.on(Node.EventType.MOUSE_DOWN,this.onMouseTouchStart,this);
- this.unLockedTheme = GameInfo.Instance.UnLockTheme;
-
- this.locked = this.node.getChildByPath('SelectTheme/UI_SelectTheme/Locked');
- this.btnRight = this.node.getChildByPath("SelectTheme/UI_SelectTheme/BtnRight");
- this.btnLeft = this.node.getChildByPath("SelectTheme/UI_SelectTheme/BtnLeft");
- }
- //返回开始游戏场景
- onBtnHome(){
- director.loadScene("StartScene")
- }
- //帮助按钮
- onBtnHelp(){
- if(!this.node.getChildByName('Help').active){
- this.node.getChildByName("Help").active = true;
- }
- }
- onBtnLeft(){
- this.currentPageIndex = Math.max(0, this.currentPageIndex - 1);
- this.pageView.getComponent(PageView).scrollToPage(this.currentPageIndex);
- }
- onBtnRight(){
- if (this.currentPageIndex === this.totalPages - 1) {
- this.currentPageIndex = this.totalPages - 1; // 保持在最后一页
- } else {
- this.currentPageIndex = Math.min(this.currentPageIndex + 1, this.totalPages -1);
- }
- this.pageView.getComponent(PageView).scrollToPage(this.currentPageIndex);
- }
- onTouchStart(){
- GameInfo.Instance.CurTheme = this.currentPageIndex + 1;
- if(this.locked.active){
- console.log("当前主题未解锁");
- }
- }
- onTouchEnd(){
- //当前主题未解锁不可进入选关
- if(this.locked.active){
- return;
- }
- //当前主题解锁了,则可以进入选关
- if(!this.selectLv.active){
- this.selectLv.active = true;
- if(this.selectTheme.active){
- this.selectTheme.active = false;
- }
- }
- }
- //点击特效
- onMouseTouchStart(event){
- const touchPos = event.getUILocation();
- const effectNode = instantiate(this.effectPrefab);
- this.node.addChild(effectNode);
- //effectNode.setWorldPosition(new Vec3(touchPos.x,touchPos.y));
- effectNode.setPosition(new Vec3(touchPos.x - 480,touchPos.y - 320));
- const effectCom = effectNode.getComponent(Animation);
- if(effectCom){
- effectCom.play();
- }
- this.scheduleOnce(()=>{ effectNode.destroy(); },0.5);
- }
- update(deltaTime: number) {
- this.updateButton();
- }
- private updateButton(){
- if(this.btnLeft && this.btnRight){
- if(this.currentPageIndex === this.totalPages - 1 ){
- this.btnLeft.active = true;
- this.btnRight.active = false;
- }
- else if(this.currentPageIndex === 0){
- this.btnLeft.active = false;
- this.btnRight.active = true;
- }else{
- this.btnLeft.active = true;
- this.btnRight.active = true;
- }
- }
- if(this.locked){
- if(this.currentPageIndex < this.unLockedTheme){
- if(this.locked.active){
- this.locked.active = false;
- }
- } else {
- if(!this.locked.active){
- this.locked.active = true;
- }
- }
- }
- }
- }
|