所有分类
  • 所有分类
  • PR模板
  • PR素材
  • PR转场
  • PR调色
  • PR预设
  • LUT

  • Warning: Attempt to read property "name" on null in /www/wwwroot/prmuban.com/wp-content/themes/modown/header.php on line 297
  • 视频素材

  • Warning: Attempt to read property "name" on null in /www/wwwroot/prmuban.com/wp-content/themes/modown/header.php on line 297
  • 音乐素材
  • 音效素材

使用表达式编辑和访问文本属性

使用表达式来控制任何文本表达式或动态图形模板中的文本样式。表达式可用于:

  • 链接多个标题并同时更新它们的样式(对于设计标题非常有用)。
  • 在多个文本图层之间保持字体、大小和样式同步。
  • 对文本属性进行全局更改。

为文本图层设置这些属性后,您可以引用该图层属性,以便在整个合成中轻松应用更改。

After Effects 使用“get”和“set”函数将文本属性的值读取和写入表达式引擎。您可以使用表达式来驱动和设置字体样式,例如跨文本图层的文本属性。

要访问文本属性的这些函数:

  1. 将表达式添加到文本图层的源文本属性。
  2. 在表达式语言弹出菜单中,选择文本 > 属性 > 属性。

将表达式另存为预设

选择添加了表达式的源文本属性。然后,选择动画 > 保存动画预设以便在其他项目中复用这些表达式。“动画预设”保存在效果和预设面板中。

PostScript 字体表达式菜单

在表达式中引用字体时,它们必须使用特殊的“系统名称”(或类似名称)。建议从文本 > 字体 > 选择字体对话框插入这一特殊名称以避免表达式错误。

  • 打开“表达式语言”弹出菜单,然后选择文本 > 字体。这将打开一个带有下拉菜单的对话框,用于选择要插入到表达式中的字样和字体。

使用表达式编辑和访问文本属性

字体同步

仅在表达式编辑器中引用的字体不记录为项目使用的字体。为了确保所有在表达式编辑器中引用的字体将会“自动同步”或填充“解析字体”对话框,在图层上使用所有这些字体,即使该图层源已隐藏。

使用表达式编辑和访问文本属性

样式对象

文本图层的所有样式属性都存在于样式对象中,可使用以下方法在源文本属性上访问:

// 使用源文本属性的完整路径 text.sourceText.style // 使用当前属性的通用名称 thisProperty.style

使用单独的样式与使用上面两个示例中的任何一个相同,但是如果组合来自多个文本图层的样式属性,这可能会造成混淆。

也可以读取其他文本图层的样式属性。使用关联器在上面显示的第一个示例的开头创建指向其他文本图层的链接。

// 访问特定文本图层的样式对象 thisComp.layer(“Other Layer Name”).text.sourceText.style;

可用的文本属性

可以使用样式对象读取和设置以下文本样式属性:

  • 字体
  • 字体大小
  • 仿粗体
  • 仿斜体
  • 全部大写字母
  • 小型大写字母
  • 跟踪
  • 行距
  • 自动行距
  • 基线偏移
  • 填充(启用/禁用)
  • 填充颜色
  • 描边(启用/禁用)
  • 描边颜色
  • 描边宽度

文本图层的源文本属性由表达式解释为 JavaScript 字符串。可以使用 sourceText 读取文本本身,但如果要修改样式属性,则必须使用 setText 方法在样式对象上设置文本。请参阅以下示例。

组合样式和源文本

使用表达式编辑和访问文本属性

组合样式和源文本

要同时返回样式和实际源文本的值,须结合使用 getStyleAt 和 setText 函数。以下是如何编写此表达式的两个示例。

// 返回样式和实际源文本的值(简写) var sourceTextProperty = thisComp.layer(“MAIN TEXT”).text.sourceText; var newStyle = sourceTextProperty.getStyleAt(0,0); newStyle.setText(sourceTextProperty);// 按图层堆叠顺序返回上一层的样式和实际源文本的值 var sourceTextProperty = thisComp.layer(index - 1).text.sourceText; var newStyle = sourceTextProperty.getStyleAt(0,0); newStyle.setText(sourceTextProperty);

下拉字体

使用表达式编辑和访问文本属性

将字体或样式链接到下拉菜单

可使用下拉菜单控制文本样式,例如将文本图层锁定为特定字体。这对于品牌指南、模板、MoGRTS 等都很有用:

// 使用下拉菜单控件将文本图层锁定为特定字体 var dropDownMenu = thisComp.layer(“LayerName”).effect(“Dropdown Menu Control”)(“Menu”); switch (dropDownMenu.value) { case 1 : text.sourceText.style.setFont(“Georgia”); break; case 2 : text.sourceText.style.setFont(“Impact”); break; default : text.sourceText.style.setFont(“Tahoma”); }

主文本图层

使用表达式编辑和访问文本属性

从“文本图层 1”获取文本属性,但覆盖字体大小和填充颜色

将多个文本图层链接到一个主字体控制器以同时控制多个图层的文本样式。创建两个文本图层,并将此表达式粘贴到其中一个的源文本中:

// 从文本图层获取所有文本属性 thisComp.layer(“Text Layer 1”).text.sourceText.style;

可以从文本图层获取样式,但需通过使用“Set”函数添加值来覆盖特定的文本属性。以下是使用填充颜色和字体大小的两个示例。

// 从“文本图层 1”获取所有文本属性,但使用硬编码值覆盖填充颜色和字体大小 var newStyle = thisComp.layer(“Text Layer 1”).text.sourceText.style; newStyle.setFillColor(hexToRgb(“FF0000”)).setFontSize(100);// 从“文本图层1”获取所有文本属性,但使用图层的当前文本属性覆盖填充颜色和字体大小 var newStyle = thisComp.layer(“Text Layer 1”).text.sourceText.style; var currentFillColor = thisProperty.style.fillColor; var currentFontSize = thisProperty.style.fontSize; newStyle.setFillColor(currentFillColor).setFontSize(currentFontSize);

示例

以下提供了有关如何通过表达式访问和使用文本属性值的示例。

字体

以下是访问文本图层的字体、字体大小、仿粗体、仿斜体、跟踪和行距的示例:

// 返回文本图层本身的字体名称 text.sourceText.style.font; // 返回另一个文本图层正在使用的字体名称 var otherLayer = thisComp.layer(“Other Layer Name”); otherLayer.text.sourceText.style.font; // 返回文本图层自身字体大小的值 text.sourceText.style.fontSize; // 返回另一个文本图层的字体大小值 var otherLayer = thisComp.layer(“Other Layer Name”); otherLayer.text.sourceText.style.fontSize; // 返回图层文本是否为仿粗体的布尔值(True 或 False) text.sourceText.style.isFauxBold; // 返回图层文本是否为仿斜体的布尔值(True 或 False)text.sourceText.style.isFauxItalic; // 以数字形式返回文本图层的跟踪值 text.sourceText.style.tracking; // 以数字形式返回文本图层的行距值 text.sourceText.style.leading;

填充

以下是访问文本图层的填充和填充颜色的示例:

// 返回一个布尔值,表示图层的文本是否应用了填充(True 或 False)text.sourceText.style.applyFill; // 返回文本图层填充颜色的值 // 默认情况下,这将返回一个 RGB 值数组,范围为 0 – 1.0 之间 text.sourceText.style.fillColor; // 使用 setApplyFill 和 setFillColor 设置文本图层的填充颜色 // setFillColor 值定义为 RGB 数组,范围为 0 – 1.0 之间 var newStyle = style.setApplyFill(true); newStyle.setFillColor([1.0, 1.0, 1.0]); // 设置文本图层的填充颜色,用 hexToRGB 替换 0 – 1.0 RGB 数组以定义具有十六进制值的颜色值 var newStyle = style.setApplyFill(true); newStyle.setFillColor(hexToRgb(“FFFFFF”));

填充 RGB 值

// 返回填充颜色的红色 (R) 值 text.sourceText.style.fillColor[0];

描边

以下是访问文本图层的描边、描边颜色和描边宽度的示例:

// 返回一个布尔值,表示图层的文本是否应用了描边(True 或 False)text.sourceText.style.applyStroke; // 返回文本图层的描边颜色值 // 默认情况下,这将返回一个 RGB 值数组,范围为 0 – 1.0 之间 text.sourceText.style.strokeColor; // 使用 setApplyStroke 和 setStrokeColor 设置文本图层的描边颜色 // setStrokeColor 值被定义为一个 RGB 数组,范围为 0 – 1.0 之间 var newStyle = style.setApplyStroke(true); newStyle.setStrokeColor([1.0, 0.0, 0.0]); // 设置文本图层的描边颜色,用 hexToRGB 替换 0 – 1.0 RGB 数组以定义具有十六进制值的颜色值 var newStyle = style.setApplyStroke(true); newStyle.setStrokeColor(hexToRgb(“FF0000”)); // 以数字形式返回文本图层的描边宽度值 text.sourceText.style.strokeWidth;

描边 RGB 值

// 返回描边颜色的绿色 (G) 值 text.sourceText.style.strokeColor[1];

Get 函数

使用“Get”函数返回特定时间的特定字符的样式值。“index”应该是一个数字,需要样式的字母或字符的索引。“atTime”也应该是一个数字,即在样式已设置关键帧并随时间变化的情况下,在合成中获取样式的时间。

text.sourceText.getStyleAt(index, atTime);注意:

text.sourceText.style 与 text.sourceText.getStyleAt(0,0) 的使用方法相同。

// 在时间轴开头获取第一个字符的样式 text.sourceText.getStyleAt(0,0);

Set 函数

可以单独使用或组合使用其他“Set”函数来跨图层驱动样式。对源文本属性的样式对象调用以下每个函数:

// 将字体设置为 Arial style.setFont(“ArialMT”) // 将字体大小设置为 80 style.setFontSize(80); // 使用布尔值启用仿粗体 style.setFauxBold(true) // 使用布尔值启用仿斜体 style.setFauxItalics(true) // 使用布尔值启用所有大写字母 style.setAllCaps(true) // 使用布尔值启用小型大写字母 style.setSmallCaps(true) // 将跟踪设置为数字 style.setTracking(10); // 设置行距为数字 style.setLeading(10); // 使用布尔启用自动行距 style.setAutoLeading(true); // 将基线偏移设置为数字 style.setBaselineShift(10); // 将描边宽度设置为数字 style.setStrokeWidth(10);

文本样式的所有“Set”函数都可以链接在一起以轻松设置多个属性,而无需每次都声明新样式,如下例所示:

注意:

在设置好最后一个属性之后才使用分号。在单独的行中列出每个属性有助于使整个链更易于阅读。

// 启用填充、设置填充颜色、设置基线、设置跟踪,并启用自动行距 text.sourceText.style .setApplyFill(true) .setFillColor(hexToRgb(“FFFFFF”)) .setBaselineShift(10) .setTracking(25) .setAutoLeading(true);

段落文字表达式技巧

在字符串表达式中使用“r”开始一个新的文本行。例如,要将原始文本从一个图层复制到同一图层上,并在新行中用全部大写的字符重复原始文本,请使用以下表达式:

text.sourceText + “r” + text.sourceText.toUpperCase()

源文本表达式的其他用途

向合成添加文本图层并向其源文本属性添加表达式可能是检查其他图层的属性值的一种非常好的方法。例如,源文本属性的以下表达式以图层堆积顺序报告下一个图层的不透明度属性的名称和值:

var nextLayer = thisComp.layer(index + 1); nextLayer.name + “rOpacity = ” + nextLayer.opacity.value;

以下示例在设置其“视频”开关的当前时间以堆积顺序报告用作最高图像图层源的素材项目的名称:

// 将 sourceFootageName 创建为一个空字符串 var sourceFootageName = “”; // 循环合成中的所有层 (var i = 1; i <= thisComp.numLayers; i++) { // 如果 i 匹配该层的索引,则继续下一个循环 (i == index) { continue; } // 为循环的当前迭代设置 myLayer var myLayer = thisComp.layer(i); // 如果 myLayer 没有视频或未处于活动状态,则继续下一个循环/层 if ( !myLayer.hasVideo || !myLayer.active ) { continue; } // 如果当前时间 myLayer 处于活动状态 if ( myLayer.active ) { try { // 将 sourceFootageName 设置为 myLayer 的源名称 sourceFootageName = myLayer.source.name; } catch ( err ) { // 如果 myLayer 没有源,// 将 sourceFootageName 设置为 myLayer 的名称 sourceFootageName = myLayer.name; } // 停止循环中断; } } // 显示 sourceFootageName sourceFootageName;

上次更新日期: 2023年5月25日

原文链接:https://helpx.adobe.com/cn/after-effects/using/expressions-text-properties.html

声明:预览视频中的视频、音频、图片及字体仅做展示,不包含在下载文件内;水印不代表署名仅用于防盗,版权归原作者所有。 版权说明:资源均源于互联网收集整理,不保证资源的可用及完整性,不提供安装使用及技术服务,仅供个人学习研究,请勿商用。喜欢记得支持正版,若侵犯第三方权益,请及时联系我们删除!《版权声明》

0

评论0

请先
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
关注后请回复“登录”二字获取验证码