Creator打字机效果

请添加图片描述
我封装了非常好用的方法
只需要传入指定的label,要显示的内容和每个字显示的时间间隔就可以,返回全部显示完所需时间
支持同一个label未全部显示完就再次设置新的显示内容
这个方法靠两个数组维持

	// 这个数组控制文字是否可以继续显示,防止文字乱套
    is_string: boolean[] = [];
    // 之前使用过set_label_stringTW方法的所有label
    label_last: LabelComponent[] = [];


    // 设置label内容以打字机形式显示   label为指定组件,string为显示内容,time为几秒多显示一个字   返回显示完全部文字的所需时间
    set_lable_stringTW (label: LabelComponent, string: string, time: number): number {
        let self = this;

        // 文字可以继续显示
        this.is_string.push(true);
        // 获取控制本次效果是否继续显示的变量号码
        let num = this.is_string.length - 1;

        // 如果不是第一次调用
        if (this.label_last != null) {
            // 利用for循环,将传入的label之前所有的打字机效果文字全部停止显示
            for (let i = 0; i < this.label_last.length; i ++) {
                if (this.label_last[i] == label) {
                    this.is_string[i] = false;
                }
            }
        }
        // 把本次传入的label存起来
        this.label_last.push(label);

        
        // 设置显示内容为空
        label.string = "";
        // 将文本截成一个字一个字的数组
        let str: string[] = string.split("");


        // for循环利用定时器实现打字机效果
        for (let i = 0; i < str.length; i++) {
            // 文本的每个字
            let string = str[i];
            this.scheduleOnce(function () {
                // 如果可以显示
                if (self.is_string[num] == true) {
                    // 显示给label
                    label.string = label.string + string;
                }
            }, i * time);
        }

        // 返回全部显示完所需时间
        return(str.length * time - time);
    }

源码:https://gitee.com/propertygame/cocos-creator3.x-demos/tree/master/NoviceGuide
技术交流Q群:1130122408
更多内容请关注微信公众号
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值