說明:AE一般指Adobe After Effects。
前面我們對對象(Object)有了一定的了解,而且我們還介紹了一個特定的對象:方法(Method)。方法(Method)可以對值的進行操作并且可以生成新值。但是,如果我們需要的方法(Method)不存在,而我們想要創建自己的方法,該怎麼辦?
創建一個函數 function接下來我們介紹下一個關鍵字 function:
// 創建一個 function:
function nameFunction (){
// 你的 function 代碼
return result; // 返回一個結果
};
// 調用上面創建的 function:
nameFunction(); // 使用 function 名稱調用
我們通過一個例子來看看這是如何工作的,創建一個橢圓形狀圖層,并将其放置在合成的左上角:
接下來,我們打開圖層的位置屬性的表達式編輯器,并寫入:
function center(){
return [thisComp.width/2,thisComp.height/2];
};
center();
我們看到,使用剛剛創建的這個自定義的函數,來将圖層移動到了合成的中心。
function 創建詳解
function nameFunction
/*
要創建一個函數,我們首先需要寫該函數關鍵字 function,然後命名該函數。
在我們的示例中,我們給自定義函數命名為 center。
你可以根據需要為你函數命名,就像定義一個變量一樣,隻要你遵守我們提到的關于命名一個變量的規則。
這也适用于創建的任何新術語,但不要以數字開頭,也不要使用已經在表達式中存在的術語。
*/
()
/*
為函數命名後,需要在後面添加一個括号 ()。
*/
{}
/*
接下來,我們在花括号内來定義函數體,即,編寫函數要執行的操作。
請記住,當我們編寫表達式時,它可以完全寫在花括号之間;
創建函數時,就像創建一個可以通過快捷方式調用的表達式。
*/
return
/*
在花括号内,我們可以編寫一個函數,就像編寫一個獨立存在的表達式一樣。
需要注意的是,函數的結果需要使用關鍵字return返回,因此它将生成函數創建的新值。
沒有return返回内容,它就不會産生任何内容。
當表達式執行到達return時,函數将停止執行。
return關鍵字有一個特定規則,函數的結果需要在同一行上才能起作用。
在我們的示例中,我們隻有一條語句,因此我們直接在return關鍵字之後編寫語句。
我們需要一個數組值來生成位置值,所以在括号中我們将創建一個數組值來描述x和y坐标。
寬度和高度是組成的值,将寬度和高度的數值,除以2,得到每個維度的中間值。
*/
使用這個函數 function
/*
一旦創建并定義了函數,就必須調用它,就像調用對象一樣。
創建了函數并不代表被使用了,在表達式中創建對象或函數後,還得需要去調用它。
要調用該函數,我們需要輸入要使用的函數的名稱,但請注意,函數名稱後需要加上括号。
在上述示例中,我們在表達式編輯器中輸入 center() 來調用了而這個函數,
這個 center() 函數通過計算返回給我們最終要轉到的位置的寬高值。
*/
上面我們創建了一個可以自己進行工作的函數,那麼,如果我們需要讓函數按照我們特定的要求,對我們告訴他的一些數據進行處理,并返回給我們結果,要如何處理呢?
這就需要我們創建一個帶參數的函數 function :
// 創建一個帶參數 arguments 的函數 function:
function nameFunction (arguments){
// 你的 function 代碼,并包含對參數 arguments 的處理
return result; // 返回一個結果
};
// 調用上面創建的 function,并帶上參數 arguments:
nameFunction(arguments); // 使用 function 名稱調用
下面,我們嘗試創建一個函數,使用函數我們反轉圖層的x和y坐标,仍然在位置屬性的表達式編輯器中寫入表達式代碼。
初始狀态:
初始位置是 [372,204]。
位置屬性中寫入,帶有1個參數的函數:
function invert (a){
return [a[1],a[0]];
};
invert(position);
我們可以看到,當表達式寫入後,位置屬性數值改變成了 [204,372]。
在這裡,我們的函數本身是并不知道對哪個數據進行處理的,而是在調用這個函數時,我們通過傳遞參數的方式,将一個數據(這裡傳遞的是位置數據)告訴了我們自定義的函數 invert。
上面我們傳遞的參數是一個數組值,僅傳遞了1個參數,當然我們也可以将參數數據分開傳遞。
位置屬性中寫入,帶有2個參數的函數:
function invert (a,b){
return [b,a];
};
invert(position[0],position[1]);
大家可以看到,效果是一樣的。
函數的參數函數的參數是可以添加若幹個的,需要注意,多個參數之間要用英文逗号“,”進行分隔,就像這樣:
nameFunction (argument 1, argument 2,..., argument n)
以上是函數 function 的基礎使用方法,大家可以嘗試一下!
以上便是本節全部内容,如果你對AE表達式感興趣,請關注後續文章!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!