AE教程 - AE表达式引擎的差异

AE表达式是基于JavaScript语言来实现的,JS在不同的发展阶段,有不同的标准(ECMAScript),AE的表达式引擎有2种:

1、Legacy Extend Script

2、JavaScript


你可以在项目设置面板中设置AE的表达式引擎。

AE教程 - AE表达式引擎的差异

为什么我们需要了解AE表达式引擎呢?

因为你在写AE表达式、使用AE模版、脚本或者看AE教程的时候,你的AE表达式引擎跟别人的不一样就会出现问题。


JavaScript 与旧版 ExtendScript 表达式引擎之间的语法差别:

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引擎。

AE教程 - AE表达式引擎的差异

教程   AE
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章