12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import { _decorator, Component, Node, Label, CCInteger, Color } from "cc"
- const { ccclass, property, requireComponent } = _decorator
- @ccclass("UIExtend/LabelTick")
- @requireComponent(Label)
- export class LabelTick extends Component {
- @property
- private prefix: string = ''
- @property
- private suffix: string = ''
- //保留小数点后几位
- @property(CCInteger)
- private decimalPlaces: number = 0
- private label: Label = null
- private curNumber: number = 0
- private intervalPerUpdate: number = 0
- private finalNumber: number = 0
- protected onLoad(): void {
- this.label = this.getComponent(Label)
- }
- protected onEnable(): void {
- }
- protected onDisable(): void {
- this.unscheduleAllCallbacks()
- }
- public init(n: number): void {
- this.curNumber = n
- this.label.string = `${this.prefix}${this.curNumber.toFixed(this.decimalPlaces)}${this.suffix}`
- }
- public tickLabel(finalNumber: number, duration: number = 0.5) {
- if (this.curNumber === finalNumber) {
- this.curNumber = finalNumber
- this.finalNumber = finalNumber
- this.label.string = `${this.prefix}${this.finalNumber.toFixed(this.decimalPlaces)}${this.suffix}`
- }
- else {
- this.finalNumber = finalNumber
- this.intervalPerUpdate = (finalNumber - this.curNumber) / (duration * 33)
- this.unschedule(this.updateForNumber)
- this.schedule(this.updateForNumber, 0.03)
- this.label.string = `${this.prefix}${this.curNumber.toFixed(this.decimalPlaces)}${this.suffix}`
- }
- }
- private updateForNumber(dt) {
- this.curNumber += this.intervalPerUpdate
- if ((this.intervalPerUpdate > 0 && this.curNumber > this.finalNumber)
- || (this.intervalPerUpdate < 0 && this.curNumber < this.finalNumber)
- ) {
- this.curNumber = this.finalNumber
- this.unschedule(this.updateForNumber)
- }
- this.label.string = `${this.prefix}${this.curNumber.toFixed(this.decimalPlaces)}${this.suffix}`
- }
- public stop() {
- this.unschedule(this.updateForNumber)
- this.curNumber = null
- this.finalNumber = null
- }
- }
|