cocosCreator2.x数字滚动组件 开箱即用

const { ccclass } = cc._decorator;

@ccclass
export default class NumScrolling extends cc.Component {
    private numLabel: cc.Label = null;
    private __num: number = 0;
    private arr: Array<number> = [];
    private isAnimIng: boolean = false;

    private get num() {
        return this.__num;
    }
    private set num(val: number) {
        this.__num = val;
        if (!this.numLabel) {
            this.numLabel = this.node.getComponent(cc.Label);
            this.numLabel.cacheMode = cc.Label.CacheMode.CHAR;
        }
        this.numLabel.string = val.toFixed(0);
    }

    public to(num: number) {
        console.log('NumScrolling to >>>' + num);
        this.arr.push(num);
        if (!this.isAnimIng) {
            this.run();
        }
    }

    private async run() {
        const one = this.arr.shift();
        this.isAnimIng = Boolean(one);
        if (one) {
            await this.anim(one);
            this.run();
        }
    }

    private async anim(lastNum: number): Promise<void> {
        return new Promise(async (resolve) => {
            const c = Math.abs(lastNum - this.num);
            if (c != 0) {
                let step = c / 20;
                let dir = lastNum > this.num ? step : -step;
                this.schedule(() => {
                    this.num += dir;
                    console.log(this.num, dir);
                    if ((dir > 0 && this.num > lastNum) || (dir < 0 && this.num < lastNum)) {
                        this.num = lastNum;
                        this.unscheduleAllCallbacks();
                        resolve();
                        return;
                    }
                }, 0.001);
            } else {
                resolve();
            }
        });
    }
}

直接挂在带label的node上,

调用to方法即可

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值