(这是一段引人入胜的开场白......),针对知道ae基础操作的群体的教学

授人以鱼不如授人以渔,学习表达式应该是从学会脚本语言入手,而不是通过记忆的方式记住每种效果的表达式语句。这里说的编程并非特指学习某种编程语言,只是借鉴其中一些思路。

After Effects 表达式使用 Adobe ExtendScript 语言,该语言是 JavaScript 的一种扩展形式——即,多数情况下,我们可以用JS语法去写或者去解读很多AE表达式。

part.1 何谓“编程”思路

对于学习AE表达式来说,理解“编程”思路,只需要下面这张简单的程序框图,我记得初中数学老师就教过这种框图程序框图(i++的意思是i = i + 1)

“编程”这件事情,从简单的理解来说,它就是一种和计算机沟通的语言,这和学外语和外国人沟通是一样的。你可以通过编程语言(也可以说是脚本语言)告诉软件或者计算机应该去做什么,比如在一个时间段内让图像做从小到大的动画,或者在ae里写一个物理碰撞引擎(秃子可以挑战一下)XD。

小结一下:“编程”的思路,即是通过组合学到的一些简单表达式语句,组合出你想告诉计算机的命令,然后输入到表达式运行框内。(part2会介绍表达式语句)

这里用AE表达式举例,为了让表达式执行结果得到更好的返回,这里对文本的“源文本”作为表达式的承载。众所周知,1+1=2,这里直接输入1+1到表达式框内,源文本就会显示一个“2”的文字到文本框中。

part.2 开始写表达式

setp1.一些编程过程中必须知道的知识。

A.所有标点符号都必须是英文的,中文标点符号必定报错

B.“xxxxxxx”这里的XXXXXXX可以替换成任意想要的文字或者字符,不限制中英文;被“”括起来的属于字符串

C.AE表达式默认返回最后一行语句的计算值,比如第一行写1+1,第二行写1+3,最后返回的是1+3的运算结果4

D.规定在等号“=”左边的必须是变量,即“i,j”这种单字母,或者“flag,name,aaAAdd”这种多字母词,或者“flag2,flag3”这种字母+数字的形式(数字+字母是错的),或者使用下划线“Ae_Name,flag_Name”,且他们都区分大小写,如果不是循环或者判断语句,每行结束可以添加“;”作为换行标记

E.除了文本框的“源文本”能接受字符串类型的返回,其它地方返回文本类型的数值基本上都会报错,可以试试会不会错

F.具体的JS编程问题可以用的时候百度就好,比如百度搜“JS小数点取整函数”就会有parseInt(7/2)这样的函数,它返回的是数字3

setp2.AE自带函数都是做什么用的,怎么用

AE自带了很多函数,比如常用的random(),wiggle(),loopOut()等等,但是没有一个中文解释,第一次用就怎么也不会用,比如一些不常见的 addToMotionGraphicsTemplate(),和编程一样,官方也同样地提供了一份帮助文档,来帮助学习ae的表达式语言,而且它还有中文版!!脚本帮助是介绍怎么写脚本的,表达式引用是介绍ae自带表达式怎么用的(自己去看)帮助文档

setp3.学一点点JS语言

先来回忆一下,如何解一道数学应用题:运送29.5吨煤,先用一辆载重4吨的汽车运3次,剩下的用一辆载重为2.5吨的货车运。问:汽车一共走了多远?还要运几次才能完?我们试着在AE里面解这道题:

表达式:

//可以通过“//”来添加一行注释

//设:运送X才能运完,y是4吨汽车运3次后剩余的重量

y=29.5-4*3

x=3+y/2.5

//最后我们用向上取整函数,对次数进行取整(如果结果是整数就没必要,为了适用所有情况所以需要)

Math.ceil(x)

案例1

上面这个例子只是用了简单的四则运算和一个js向上取整函数Math.ceil()。

接下来我们再写一个,0~1秒显示“#代号洞洞伍”,1~2秒显示“aeScripts”,2~3秒显示“从编程角度入手”的表达式动画表达式

frame = time*30 //特别提示取得帧数的方法,time*帧率

if(time<1){

"#代号洞洞伍"

}

else {

if(time<2){

"aeScripts"

}

else{

"从编程角度入手"

}

}文字动画1

这里出现了最最最关键的结构,判断结构——if(){;}else{;}结构,一个if()必须有一个else,if后面的括号里写的应该是判断条件,返回值只有True或False,或者0和1。比如if(x==23)代表x的值和23是否一样,一样则执行if(){执行的代码}else{不执行的代码},不一样则执行if(){不执行的代码}else{执行的代码}。

setp4.AE表达式中的“.”的意义

有时候用ae表达式的时候会发现类似“thisComp.layer("").text.sourceText”,基本上都可以理解这些“.”就是有中文“的”的意思,翻译下来翻译1

再回到AE里,红色箭头代表“.”,青色箭头代表各个表达式词代表的位置解析1

再进阶一点,假如在合成1里也有一个空文本图层,我们想在合成2中调取。 只需要把thisComp改成comp("合成 1")就完成了。

Step5.更加深入的学习

至此,整个用编程思路写AE表达式的方法就介绍得差不多了,如果以前从来没接触过编程也可以直接上手,核心思想就是——解数学题,然后用if分隔解题得到的各种结果,让ae做出相应结果的行为

灵活应用表达式写一些有趣的玩具可以参考我的视频投稿

想深入学习JS表达式或者写AE表达式碰见问题可以去看看http://www.runoob/js/js-tutorial.html也可以直接问百度

小声bb:有用的话,转发一下,下周写两个好玩的ae脚本案例出来( ̄3 ̄)

大声bb:下周写两个好玩的ae表达式案例出来( ̄3 ̄)

更多推荐

ae编程语言as_【微教程】从编程的思路学习AE表达式