拖延症斷斷續續寫了差不多一個月了,終於填完坑了,總共碼了四千餘字,主要還是配圖麻煩。
· 前言
· 表達式基礎
· 表達式的規則
· 掌握常用的表達式等於掌握90%
· 其他表達式的學習方法
· 怎麼優雅地鞭撻表達式
· 附帶:AE表達式學習資源推薦
一、前言 一直以來,大多數人都不想去碰AE的表達式,覺得和編程掛鈎的東西都很難。於是我嘗試著去思考怎麼簡單地做AE表達式的教程,讓大部分人能接受。
於是,這篇非官方的來自江湖的AE表達式文檔就出爐了。
江湖就有江湖的規矩。
不拘小節不刻板,不可能像官方文檔一樣每個函數都單獨拿出來講,官方文檔是讓人們當做字典查找的,我們只講有用的,講少一點,講簡單一點。
本文的目的不在於全面,在於力爭各位讀完之後,看得懂AE表達式,會寫AE表達式!
二、表達式基礎①、如何添加表達式
再深厚的功夫也是從扎馬步開始的。如何添加表達式呢?兩個動作。
①按住[Alt鍵],②點擊你要添加表達式的屬性前面的[秒表]。
這個時候就會出現一個編輯框,把表達式寫進去就可以啦。
示例:用表達式讓[ball]的位置固定在[200, 200]處。
②、表達式開關
這個開關是[開啟/關閉]表達式,可以令你在不清除表達式框的情況下,禁用表達式。
示例:表達式的開啟和禁用
③、表達式拾取器
它在民間有多個名字,飄忽不定,有人說是拾取器,有人說是關聯器,有人說是橡皮筋。
打個比方,你在寫一篇叫做《我的同學》的作文,你的同學名字叫做沃爾塔·薩斯皮諾斯·阿卡貝斯基,你記不住,於是你用手指一指你的同學,他的名字就自動出現在你寫的文章裡面,多方便呀,多偉大的手指呀。表達式拾取器就是這隻神奇的手指。
示例:用表達式讓[ball]圖層的位置位於[anotherBall]的下面50px處
④、函數菜單
AE有很多已經內置的函數給你用,你並不需要記住它們每個的名字和參數,只需要記住有這麼一個函數存在就可以,需要用的時候可以在這個菜單裡面搜索你想要的函數。
AE表達式的規則,等同於我們平日說話的時候主謂賓等語法規定,我們需要遵守,AE和你才能正常愉快地交流啊。
規則一:它要啥你就給它啥
無論你表達式寫得多麼長多複雜,前面一大堆,都是為了計算出最後那個AE所要求的格式的東西。
[位置]:我要的是一個格式為[x, y]的東西,我好知道我在哪個地方。
[不透明度]:我只要一個數值就可以了,比如0,比如50,比如100。
[填充顏色]:我需要一個格式為[r, g, b, alpha]的東西,我好知道我是個啥顏色。
【示例】:
規則二:類型
在AE表達式中,變量a常見的類型有
①、數值。例如數字1、1.5、-10。
②、字符串。用引號包括起來,例如一個字符串」哈嘍你好呀」、」我在寫文檔ing」 。
③、布爾值。判斷對錯的布爾類型 true 和 false 。
④、數組。由許多元素組成的一個組。
規則三:基本的計算
加減乘除就不用說了,在這裡提一個常用的[取餘數]的符號——%。
比如:a = 100 % 3;
那麼a的值就是1。
【示例】:
註:[time] 是AE提供的,表示當前的時間。例如1s時,time = 1;2.5s時,time = 2.5。我們經常利用[time]的值跟隨時間變化這個特性來製作動畫。
規則四:變量
不要覺得[變量]這個詞很陌生可怕,其實,初中開始我們的數學引入的字母,可以說就是[變量],它的作用就是來存儲數值的。
【示例】:
註:[time] 是AE提供的,表示當前的時間。最後一個示例中的」time % 1」,表示當前時間對1取餘數。例如time = 1.5s處,time % 1 = 0.5。因此,(time % 1) 隨著時間在0~1之間不斷變化。
規則五:語句
表達式是由一行一行的語句構成的,每個語句以一個分號結尾,當然AE表達式允許你忽略分號,不過在每個語句後面添加分號,是一個好的習慣。
規則六:注釋
先看看下面兩個表達式:
上面那個可能你一開始看到,一時半會不知道它是用來做什麼的。
但是下面那個表達式,添加了作者的注釋,一目了然!
有兩種注釋的方法:
①、單行注釋:兩個斜槓 // 可以注釋掉同一行後面的所有內容。
②、多行注釋:可以用 /* 和 */ 把要注釋的內容括起來,這種方式可以注釋多行內容。
話說回來,注釋可以解釋代碼的作用,增加可讀性,同時它不會被運行,直接被AE忽略掉。簡單來說,表達式是寫給AE看的,注釋是寫給人看的。
【示例】:
規則七:條件
條件語句的結構其實很簡單,總結來說就是:
注意:
①、一個if後面可以跟著無數個else if,但是只能跟著一個else,且必須在最後面。
②、{} 花括號後面不需要加分號。
③、if 和else if後面的括號裡是判斷的條件,常見的判斷有以下:
1、a == 1 (判斷a的值是不是等於1,切記是兩個等於號)
2、a >= b (判斷a的值是不是大於等於b)
3、 !(3 > 1) (!表示取反,因為3>1是true,所以取反之後這個條件是false)
4、flag (判斷flag是布爾值true還是false)
5、0 (當判斷條件是0,則表示false,若是0以外的其他數字,則表示true)
【示例】:
規則八:循環
個人感覺:循環在AE表達式裡面的使用其實還挺少見的(所以循環的例子好難想呀) 。
循環有三種形式,你可以根據具體情況選擇任意一種。
舉個例子我們看看怎麼使用。
註:在循環塊裡面添加」break;「,表示跳出(打破)這個循環,不管循環條件滿不滿足,都跳出循環。
和 「break;」 類似的還有一個 「continue;」 ,它表示結束本次循環,進行下次循環,而不是跳出(打破)循環。
規則九:函數
①、內置函數:
還記得那個函數菜單嗎?在裡面我們可以看到很多AE提供給我們使用的函數。
例如:
a、wiggle(freq, amp); // [擺動]函數,freg是頻率,amp是幅度
b、random(min, max); // [隨機]函數,在min和max值之間取一個隨機值
(更多內置常用的函數將在第四節講解)
②、自定義函數:
個人感覺:在AE表達式中自定義函數還是比較少見的。
函數的定義格式如下:
在這裡我們簡單地舉一個例子:
註:因為random()返回的是一個小數,所以我們自己寫了一個getRandomInt(min, max)函數來返回一個隨機的整數。
規則十:那些特殊的規則
①、a = a + 1; 這個語句我們可以簡寫為 a++;
②、同理,a = a - 1; 我們可以簡寫為 a--;
③、條件語句還有一種寫法:condition ? do somthing : or do something;
這是在 if 和 else 都只有一個語句的時候可以採取的簡寫方式。
舉例: 2 < 3 ? a = 1 : a = 0; // a的值為1
一般我們寫成 a = 2 < 3 ? 1 : 0; // a的值為1
註:想完整地學習語法規則可以去runoob.com或者w3school.com.cn搜javascript的教程看。
四、掌握常用的函數等於掌握90%一般我在寫表達式的時候,除非突發奇想想寫點新奇的東西,基本90%就是使用那幾個常見的函數。
一、time
前面提過,time隨著時間線的變化,值也在變化,1秒處time=1,1.5秒處time=1.5。
利用隨著時間變化的time值,我們可以做出隨著時間變化的表達式。
二、index
每個圖層都有自己對應的index,根據index不同,我們可以給不同圖層做出不同的效果。
二、value
即[不加表達式情況下]當前該屬性的值。
三、wiggle(freq, amp)
擺動函數,第一個參數freq指的是擺動的頻率,第二個參數amp指的是擺動的幅度。
四、random()
隨機函數,通過調用random(),我們可以得到一個介於0和1之間的隨機值,利用隨機值,我們可以做出各種隨機的效果。
五、valueAtTime(t)
這是一個常見的函數,我們可以調用這個函數得到對應時間的值。
六、loopOut()
循環函數。當我們想做一個來回運動的球的時候,我們不需要重複K幀,只需要做好一個來回的關鍵幀,然後添加loopOut()函數即可~
其他的表達式有的時候也會用到,那我們應該怎麼去學習呢?
①、瀏覽了解:還記得我們在第一章提到的小三角形嗎,在那裡我們可以看看AE給我們提供了什麼函數,裡面有一些可能你永遠都不會用到,但是了解瀏覽一下不會錯的。
②、官方文檔:當然在這裡我們只能看到每個函數的名字,至於它 能怎麼用,請查看官方文檔!官方文檔已經對每個函數的作用描述得很清楚了,還有舉例說明,在這裡沒必要贅述。
附:官方中文文檔網站:
https://helpx.adobe.com/cn/after-effects/using/expression-language-reference.html
終於寫到如何優雅鞭撻表達式了,激動!
我們分3個Part來鞭撻!
Part 01:利用表達式控制控制項,優雅控制參數
在AE 的效果特效中,有一個叫做[表達式控制]的子菜單。
我們可以利用著這些控制控制項,來輕鬆地控制表達式的參數,實現不同的效果。
①、舉一個例子,用[滑塊控制項]來控制五角星旋轉的速度。最重要的是,通過這個[滑塊控制項],我們不僅可以直觀簡便調整旋轉速度而不需修改表達式,還可以給五角星的旋轉速度K幀,讓五角星在不同時間以不同速度旋轉。
②、再附上一個[複選框控制]的例子
Part 02:函數化,讓表達式結構更清晰
在表達式中,我們可以把重複使用的代碼組織成一個函數。這樣,即使很長的表達式,也會條理清晰,結構明了。(不過因為表達式一般不會很長,函數化用到得也比較少)
具體使用方法,請參考第三章的規則九小節。
Part 03:優雅的編寫風格
略。
①、官網:
https://helpx.adobe.com/cn/after-effects/using/expression-language-reference.html
②、Harry Frank的一套經典的AE表達式視頻教程(六集)
中文字幕自取連結:http://pan.baidu.com/s/1c9c5S6
③、一個很棒的AE表達式文檔教程
原版:http://www.jjgifford.com/expressions/basics/index.html
翻譯版:http://andyeee.blogspot.com/2010/12/ae-expressions-1.html