如何在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
相关产品推荐
相关产品推荐

