AE表达式是基于JavaScript语言来实现的,JS在不同的发展阶段,有不同的标准(ECMAScript),AE的表达式引擎有2种:
1、Legacy Extend Script
2、JavaScript
你可以在项目设置面板中设置AE的表达式引擎。
为什么我们需要了解AE表达式引擎呢?
因为你在写AE表达式、使用AE模版、脚本或者看AE教程的时候,你的AE表达式引擎跟别人的不一样就会出现问题。
1、不允许出现表达式末尾只有 IF 而没有 ELSE 的情况
// Legacy ExtendScript引擎
var a = 100;
if(time>2){
999 // undefined
}
// Javascript引擎
var a = 100;
if(time>2){
999 // 条件不成立,什么都不显示
}
//建议无论何种引擎都按下面这种写
var a = 100;
if(time>2){
9999
}
else
{
value
}
2、不使用花括号的情况下,if 和 else 不能在同一行
// Legacy ExtendScript引擎
var a = 100;
if(time>2) 999 else 888 //条件不成立8888,条件成立999
// Javascript
var a = 100;
if(time>2) 99999 else 88888 //条件不成立,什么都不显示
// Javascript引擎,else需要换行,或者加上花括号
var a = 100;
if(time>2) 999
else 888
var a = 100;
if(time>2){999}else{888}
//if else可以用三目运算的写法代替
time>2 ? 999 : 888
3、源文本属性数组索引访问字符需要 .value
/*
1、新建一文本图层,输入 比邻课堂
2、获取第一个文字"比"
*/
// Legacy ExtendScript引擎
text.sourceText[0]; // 正常输出 "比"
// Javascript引擎
text.sourceText[0]; // 输出 "5.242179..."
text.sourceText.value[0]; // 正常输出 "比"
4、获取Position(位置)、Scale(缩放)等数组类型的属性值需要.value
// Legacy ExtendScript引擎
transform.position; // [Object Property]
// Javascript引擎
transform.position; // 正常输出Position(位置)
以上这些是比较常见的表达式引擎差异,AE表达式官方文档里还有其他一些不常用的差异,有兴趣的同学可以去看看。
RubberHose2 无法自动旋转的问题
在使用RubberHose2制作动画时,JavaScript引擎下,表达式报错。
想让手跟着胳膊的方向旋转,需要将表达式引擎改成老版的Legacy ExtendScript引擎。
留言与评论(共有 0 条评论) “” |