在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
来判断应该显示哪个句子,然后根据句子持续的时间,逐步控制每个句子的打字进度。