在Adobe After Effects中实现打字特效,通常会通过使用 Text Animator 和一些 Expressions 来控制文字的逐字出现。你提到希望通过 JavaScript 来控制 AE 内的文字图层,且能够为正文中的每句话设置不同的出现时间。这个需求实际上是通过 After Effects 中的 Expressions 和 Keyframe 来实现的,而不是真正的 JavaScript,虽然它们在 AE 中的脚本语言中有些相似。
以下是一个基本的思路,来实现你想要的打字特效,并根据每句话的出现时间进行控制:
1. 创建文字图层
首先,在 AE 中创建一个包含标题和正文的文字图层。你可以把标题和正文分成不同的文本层,方便控制。
2. 设置打字特效
AE 的 Text Animator 提供了一个 "Typewriter" 动画预设,可以让文字逐字出现。你可以利用这个功能和 Expressions 来控制每个句子的出现时间。
3. 使用 Text Animator 设置打字效果
在文字图层中:
- 选择文字图层,点击
Animate>Opacity,然后选择Typewriter预设(这会在Animator 1中添加一个Range Selector,并应用打字效果)。 - 选择
Range Selector,你会看到有一个Start和End的属性,默认会控制打字的进度。
4. 控制每句话的打字时间
为了让正文中的每句话有不同的打字时间,你需要使用 Expressions 来控制 Range Selector 的 Start 和 End 属性,或者通过在时间轴上关键帧来实现。
下面是一个基于时间控制每句话打字效果的表达式:
Expression 示例:
总结:
通过组合 Text Animator、Expressions 和时间轴控制,你可以创建一个非常灵活的打字效果,并为每句话设置不同的出现时间。上面的表达式只是一个基本示范,具体的实现可以根据你的需求进行进一步的调整和优化。
5. 优化效果
通过使用 linear() 函数,我们将时间范围映射到 0 到 100 之间,以控制打字的进度。通过调整 sentenceStartTimes 和 sentenceDurations 数组的值,你可以自由地控制每个句子的打字出现时间。
6. 调整其他属性
你还可以根据需要调整其他属性,比如文字的颜色、字体、大小等,来增加打字效果的视觉表现。
- 打字效果时间控制 在
Start和End属性上,你可以添加一个表达式来控制每个句子的出现时间。例如:// 设置句子的开始时间和持续时间 var sentenceStartTimes = [0, 3, 6, 9]; // 每句话的开始时间(秒) var sentenceDurations = [2, 2, 2, 2]; // 每句话的持续时间(秒)var index = 0; for (var i = 0; i < sentenceStartTimes.length; i++) {if (time >= sentenceStartTimes[i] && time < sentenceStartTimes[i] + sentenceDurations[i]) {index = i;} }var sentenceStart = sentenceStartTimes[index]; var sentenceDuration = sentenceDurations[index];var progress = linear(time, sentenceStart, sentenceStart + sentenceDuration, 0, 100); progress解释:
sentenceStartTimes数组中是每个句子的开始时间(以秒为单位)。sentenceDurations数组中是每个句子的持续时间(以秒为单位)。- 这个表达式会根据当前时间
time来判断应该显示哪个句子,然后根据句子持续的时间,逐步控制每个句子的打字进度。