level_item.ts 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import game_constants from "./game_constants";
  2. const { ccclass, property } = cc._decorator;
  3. @ccclass
  4. export default class NewClass extends cc.Component {
  5. @property(cc.Label)
  6. level_text: cc.Label = null;
  7. @property(cc.Label)
  8. level_grey: cc.Label = null;
  9. @property(cc.Node)
  10. lock_node: cc.Node = null;
  11. @property(cc.Node)
  12. currentLv_node: cc.Node = null;
  13. current_level = 0;
  14. protected onLoad(): void {
  15. // 在节点加载时,为节点添加触摸结束事件监听器
  16. this.addTouchEndEventListener();
  17. }
  18. // 为节点添加触摸结束事件监听器的函数
  19. private addTouchEndEventListener(): void {
  20. this.node.on(cc.Node.EventType.TOUCH_END, this.onLevelClick, this);
  21. }
  22. initLevelItem(lv: number, isCurrentLv: boolean, isLock: boolean) {
  23. // 设置当前等级值
  24. this.setCurrentLevel(lv);
  25. // 更新等级文本显示
  26. this.updateLevelText(lv);
  27. // 更新灰色等级文本显示
  28. this.updateLevelGreyText(lv);
  29. // 根据是否为当前等级,设置当前等级节点的显示状态
  30. this.setCurrentLvNodeActive(isCurrentLv);
  31. // 根据是否锁定,设置锁定节点的显示状态
  32. this.setLockNodeActive(isLock);
  33. }
  34. // 设置当前等级值的函数
  35. private setCurrentLevel(lv: number): void {
  36. this.current_level = lv;
  37. }
  38. // 更新等级文本显示的函数
  39. private updateLevelText(lv: number): void {
  40. this.level_text.string = lv + "";
  41. }
  42. // 更新灰色等级文本显示的函数
  43. private updateLevelGreyText(lv: number): void {
  44. this.level_grey.string = lv + "";
  45. }
  46. // 根据是否为当前等级,设置当前等级节点的显示状态的函数
  47. private setCurrentLvNodeActive(isCurrentLv: boolean): void {
  48. if (isCurrentLv) {
  49. this.currentLv_node.active = true;
  50. }
  51. }
  52. // 根据是否锁定,设置锁定节点的显示状态的函数
  53. private setLockNodeActive(isLock: boolean): void {
  54. this.lock_node.active = isLock;
  55. }
  56. onLevelClick() {
  57. // 检查是否可点击当前等级,并在可点击时发送选择等级点击事件
  58. this.checkAndEmitLevelClickEvent();
  59. }
  60. // 检查是否可点击当前等级,并在可点击时发送选择等级点击事件的函数
  61. private checkAndEmitLevelClickEvent(): void {
  62. if (this.lock_node.active === false && this.current_level > 0) {
  63. cc.systemEvent.emit(game_constants.select_level_clicked, this.current_level);
  64. }
  65. }
  66. // update (dt) {}
  67. }