You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在After Effects中实现联动打字机效果的高亮闪烁光标动画?

实现和打字机效果联动的文本高亮

1. 搭建高亮基础层

  • 在你的原文本层下方新建一个矩形形状层,命名为「打字高亮条」
  • 调整矩形高度和文本行高匹配,初始宽度随意设置即可(后续无需手动修改)
  • 给矩形设置白色填充(关闭描边),若高亮过刺眼可将不透明度调整至70%-80%

2. 让高亮条与文本位置同步

  • 选中「打字高亮条」的位置属性,按住Alt点击属性前的码表,粘贴以下表达式:
txtLayer = thisComp.layer("你的原文本层名"); // 替换成你实际使用的文本层名称
txtRect = txtLayer.sourceRectAtTime(time, false);
[txtLayer.position[0] + txtRect.left, txtLayer.position[1] + txtRect.top + txtRect.height/2]

注意:务必将第一行的「你的原文本层名」替换为你实际的文本层名称,否则会报错

3. 绑定高亮宽度与打字进度

  • 选中「打字高亮条」的宽度属性,按住Alt点击码表,粘贴以下表达式:
txtLayer = thisComp.layer("你的原文本层名"); // 替换成实际文本层名称
// 读取原文本层的文本长度滑块值
charNum = txtLayer.effect("Text")("ADBE Slider Control-0001").value;
// 截取当前已显示的文本内容
fullText = txtLayer.sourceText.value;
showText = fullText.substr(0, parseInt(charNum));
// 计算已显示文本的实际宽度
tempText = TextLayerPropertyValue.createText(showText, txtLayer.sourceText.style);
tempRect = tempText.sourceRectAtTime(time, false);
tempRect.width

此时拖动滑块控制打字进度时,高亮条宽度会自动匹配已打出的文本长度,无需再手动调整修剪路径或蒙版。

4. 可选:让高亮避开闪烁光标

如果觉得高亮条遮挡了光标,可将宽度表达式的最后一行替换为以下代码:

// 计算光标字符的宽度并从高亮宽度中扣除
cursorTxt = "|"; // 替换成你实际使用的光标字符,比如"▌"或"_"
cursorRect = TextLayerPropertyValue.createText(cursorTxt, txtLayer.sourceText.style).sourceRectAtTime(time, false);
tempRect.width - cursorRect.width

嫌计算麻烦的话,直接减固定数值也可,比如tempRect.width - 8,数值大小根据光标实际宽度调整即可。


内容的提问来源于stack exchange,提问作者Finbar S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:35:22