问题描述
我正在尝试编写一个脚本,将 final_text
一个字母一个字母地写入一个 Text Layer
,在每个字母被写入之间等待一小段时间。有什么办法吗?
final_text = '#a80030';
characters = '';
for(i = 0; i < final_text.length; i++){
characters += final_text[i];
text.sourceText += characters;
#sleep for 500ms
}
解决方法
你混淆了脚本和表达式。 $.sleep
是脚本中全局对象的方法,但不是表达式中的方法。并且在表达式中使用它是没有意义的,因为它只会使表达式需要更长的时间来计算。您需要read the manual。
TL;博士: 创建一个包含最终文本的文本层。您还可以在图层的文本源属性上使用表达式。将不透明度文本动画制作器(您确实阅读了手册,不是吗?)应用于图层。将动画师的不透明度设为零。添加表达式选择器并删除普通选择器。
将此表达式应用于选择器:
(time*2 < textIndex)? 100 : 0
这使用字符索引与当前时间 * 2(时间以秒为单位)进行比较,因此每 500 毫秒设置为零不透明度(选择 100%)的字母的索引将增加。
,是的,有 $.sleep()
方法。
所以你需要做的就是
$.sleep(500);