知道每个字的点亮的开始时间,和结束时间,如何高效实现按时间轴点亮单个文字。
如:你好世界
第一秒亮起:你
第二秒亮起:好,你熄灭
第三秒亮起:世,好熄灭
知道每个字的点亮的开始时间,和结束时间,如何高效实现按时间轴点亮单个文字。
如:你好世界
第一秒亮起:你
第二秒亮起:好,你熄灭
第三秒亮起:世,好熄灭
let wordStr = "你好世界";
let wordArr = wordStr.split('');
let time = 1;
wordArr.forEach((v, k) => {
let node = new cc.Node();
node.addComponent(cc.Label);
node.getComponent(cc.Label).string = v + '';
this.testParent.addChild(node);
node.opacity = 0;
})
this.testParent.children.forEach((v,k)=>{
cc.tween(v)
.delay(parseInt(k) * time)
.to(0, {
opacity: 255
})
.delay(time)
.to(0, {
opacity: 0
})
.call((v)=>{
v.destroy();
})
.start();
})
谢谢大佬,方法是可以的。但是项目中文字交过,有汉字和字母,label量大的时候性能较低,消耗了大量的cpu,请问如何优化
我感觉你可以自己做一个对象池,对象池有三个label,交替显示,然后动态设置位置跟文字,设置最大长度上限,过了自动换行
自己手动计算下Label的位置,大小解决
在Label上加个Mask,移动Mask的位置并改变Mask的透明度
来自四年后的回应,可以图片遮罩下,然后按帧展开
搞个富文本就行,一秒一变。。。或者几个label 拼一起 ,富文本也是几个label拼一起的
不用那么复杂,底下一个整个文本,上面再盖一个高亮版本的单字上去就行了!
让我想起了,用一个 shader 也可以做。
2个label可以搞定
一个label显示所有暗的文字,例如“你好世界”
另一个label显示高亮的那个字
第一秒盖在“你”上面
第二秒盖在“好”上面
……