diamond.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { _decorator, Component, Node, LabelComponent } from 'cc';
  2. import { playerData } from '../../framework/playerData';
  3. import { util } from '../../framework/util';
  4. const { ccclass, property } = _decorator;
  5. @ccclass('Diamond')
  6. export class Diamond extends Component {
  7. @property(LabelComponent)
  8. public lbDiamondNum: LabelComponent = null!;
  9. private _curDiamondNum: number = 0;
  10. private _targetDiamondNum: number = 0;
  11. private _ratio: number = 0;
  12. private _callback: Function = () => { };
  13. start() {
  14. this._refreshDiamond();
  15. }
  16. /**
  17. * 数量累加
  18. *
  19. * @param {number} targetDiamondNum 目标总数
  20. * @param {number} [interval=0.1] 每隔多久执行一次数目累加
  21. * @param {number} [ratio=0.25] 差值比例
  22. * @param {Function} [callback=()=>{}] 回调函数
  23. * @memberof Diamond
  24. */
  25. public startRaise(targetDiamondNum: number, interval: number = 0.1, ratio: number = 0.25, callback: Function = () => { }) {
  26. this._curDiamondNum = 0;
  27. this._targetDiamondNum = targetDiamondNum;
  28. this._ratio = ratio;
  29. this._callback = callback;
  30. this.schedule(this._numRaise, interval);
  31. }
  32. private _numRaise() {
  33. this._curDiamondNum = util.lerp(this._targetDiamondNum, this._curDiamondNum, this._ratio);
  34. this.lbDiamondNum.string = util.formatMoney(playerData.instance.playerInfo['diamond'] + Math.ceil(this._curDiamondNum));
  35. if (Math.ceil(this._curDiamondNum) === this._targetDiamondNum) {
  36. this.unschedule(this._numRaise);
  37. this._callback && this._callback();
  38. }
  39. }
  40. private _refreshDiamond() {
  41. this.lbDiamondNum.string = util.formatMoney(playerData.instance.playerInfo.diamond);
  42. }
  43. }