UIGame.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { Widget, _decorator, Node, Label, Vec3, tween, isValid, math } from 'cc';
  2. import { UIBase } from '../scriptBase/UIBase';
  3. import { UI } from '../enum/UI';
  4. import { GameMgr } from '../manager/GameMgr';
  5. import { CoinItem } from '../uiItem/CoinItem';
  6. import { CoinMgr } from '../manager/CoinMgr';
  7. import { EventType } from '../enum/EventType';
  8. import { EventMgr } from '../manager/EventMgr';
  9. import { AudioMgr } from '../manager/AudioMgr';
  10. const { ccclass, property, requireComponent } = _decorator;
  11. @ccclass('UI/UIGame')
  12. @requireComponent(Widget)
  13. export class UIGame extends UIBase {
  14. private lbLevel: Label = null
  15. private coinItem: CoinItem = null
  16. protected onLoad(): void {
  17. this.lbLevel = this.findComp('SettingItem/LbLevel', Label)
  18. this.coinItem = this.findComp('CoinItem', CoinItem)
  19. }
  20. protected onEnable(): void {
  21. EventMgr.on(EventType.MergeGoods, this.onMergeGoods, this)
  22. }
  23. protected onDisable(): void {
  24. EventMgr.off(EventType.MergeGoods, this.onMergeGoods, this)
  25. }
  26. public onOpen(data?: any): void {
  27. this.lbLevel.string = `Level:${GameMgr.CurLevel + 1}`
  28. this.coinItem.init(CoinMgr.CurCoin)
  29. AudioMgr.playBgm(`游戏内音乐${math.randomRangeInt(0, 3)}`)
  30. }
  31. public onClose(data?: any): void {
  32. }
  33. protected onBtnSettingClick(): void {
  34. this.open(UI.Pause)
  35. }
  36. private onMergeGoods(worldPos: Vec3): void {
  37. this.coinItem.updateCoin(CoinMgr.CurCoin, false)
  38. const flyCoin: Node = this.coinItem.createFlyCoin()
  39. flyCoin.setWorldPosition(worldPos)
  40. const tw = tween(flyCoin)
  41. tw.to(0.5, { worldPosition: this.coinItem.node.worldPosition }, { easing: 'sineOut' })
  42. tw.call(() => {
  43. if (isValid(flyCoin)) {
  44. flyCoin.destroy()
  45. }
  46. })
  47. tw.start()
  48. }
  49. }