【學(xué)習(xí)筆記】AE腳本編寫教程

教程的視頻內(nèi)容為在線學(xué)習(xí)網(wǎng)站【沃CG】的付費(fèi)內(nèi)容,這是我在學(xué)習(xí)過程中做的筆記

@toc

第1章: 課程介紹

課程介紹

ae腳本可以代替重復(fù)性的人工操作和復(fù)雜的數(shù)學(xué)計算孽拷,設(shè)計師能有更多的時間專注于視覺表現(xiàn)上
編寫ae腳本的門檻:編程能力泳秀、英語能力

  • 第一天:ae表達(dá)式和腳本谊娇、插件的區(qū)別开财;JavaScript基礎(chǔ)(數(shù)據(jù)類型司光、變量)
  • 第二天:編程語言流程控制的部分(判斷此衅、循環(huán)强戴、函數(shù))、面向?qū)ο?/li>
  • 第三天:ae的各個接口挡鞍、用腳本控制合成骑歹、圖層的屬性
  • 第四天:添加關(guān)鍵幀、腳本界面的編寫
  • 第五天:綜合腳本的開發(fā)案例

第2章: 腳本基礎(chǔ)

ae表達(dá)式墨微、腳本道媚、插件的區(qū)別

  • 表達(dá)式
    表達(dá)式加在屬性上(為屬性賦值)、表達(dá)式每一幀都會運(yùn)算一遍

比如:wiggle(1,20)

  • 腳本
    腳本使用JavaScript編寫翘县,腳本語言不需要編譯最域,腳本語言是執(zhí)行性的語言
    ae首選項(xiàng),要啟用這兩項(xiàng)
    allow scripts to write files and access network(允許腳本訪問網(wǎng)絡(luò))
    enable JavaScript debugger(啟用JavaScript 調(diào)試器)
  • 插件
    插件使用C锈麸、C++編寫
    插件分為:特效插件镀脂、文件導(dǎo)入導(dǎo)出插件、通用插件忘伞、渲染引擎插件

通用插件:它在ae其他的菜單欄中出現(xiàn)薄翅,有自己的獨(dú)立界面,如ae的二維動力學(xué)插件“牛頓”

第3章: ExtendScript Toolkit軟件介紹

EXTK軟件介紹
ExtendScript是用JavaScript拓展出來的氓奈,他們的基礎(chǔ)語法是一樣的

軟件界面

V0zRBT.png

切換腳本在那個軟件里運(yùn)行


V0z94t.png

運(yùn)行在“主空間


V0zLbF.png

運(yùn)行匿刮、暫定、停止探颈、后面三個是在debug時用到

debug :排除錯誤

JavaScript console(JavaScript控制臺):輸出腳本運(yùn)行數(shù)據(jù)

undefined未定義的

data browser:用于瀏覽數(shù)據(jù)
function:定義的函數(shù)在這個面板顯示出來
breakpoints:打的斷點(diǎn)在這個面板顯示
call stack:當(dāng)函數(shù)存在嵌套關(guān)系時熟丸,一個函數(shù)調(diào)調(diào)用了另一個函數(shù),這個面板告訴你代碼運(yùn)行的路線是怎么樣的
scripts:列出軟件現(xiàn)有的腳本

菜單欄help:中有一些文檔

《adobe intro to scripting》:adobe腳本編寫的介紹

《javascript tools guide cc》:adobe腳本編寫中可以操作的通用功能(文件的寫入伪节、窗口界面UI光羞、adobe軟件之間的交互、訪問網(wǎng)絡(luò)怀大、C纱兑、C++寫的庫、訪問XML文件化借、訪問XMP文件)
xml用來存配置文件
xmp潜慎,比如給視頻加一個頭文件,注釋等…

設(shè)置字體
edit>preference>fonts and colors
節(jié)子老師推薦使用:consolas

alert(“hello world”);//alert 用于彈出一個提示框

第4章: AE基礎(chǔ)

通過這個小案例:在ae中創(chuàng)建一個合成铐炫、在這個合成中新建一個固態(tài)層垒手,并畫一個mask
簡單了解一下腳本是如何來控制ae里的元素
這些“元素”在JS中都被稱之為“對象”

//標(biāo)注版
app.beginUndoGroup("創(chuàng)建一個合成、固態(tài)層畫一個mask");//回退組倒信,ctrl+z撤銷時科贬,會撤銷這整個組的內(nèi)容
var comp = app.project.items.addComp("合成1",1920,1080,1.0,30.0,24); 
//("合成名字"、寬度鳖悠、高度榜掌、像素寬高比、持續(xù)時間乘综、幀數(shù)率)
var layer = comp.layers.addSolid([1,1,1],"固態(tài)層",1280,720,1);
//255=1 0-255 就是0-1
//(顏色憎账、固態(tài)層名字、寬度卡辰、高度鼠哥、像素寬高比、持續(xù)時間)
var mask = layer.Masks.addProperty("Mask");//給layer加一個mask
//mask看政、特效的性質(zhì) 都是一個Property(屬性)
var maskShape= mask.property("maskShape");//獲取maskpath屬性
var maskShapeValue = maskShape.value//獲取值
maskShapeValue.vertices = [[100,100],[800,100],[800,440],[100,400]]
//設(shè)置新的值
maskShape.setValue(maskShapeValue);//為新的值生效     
app.endUndoGroup();
//無標(biāo)注版
app.beginUndoGroup("創(chuàng)建一個合成朴恳、固態(tài)層畫一個mask");
var comp = app.project.items.addComp("合成1",1920,1080,1.0,30.0,24); 
var layer = comp.layers.addSolid([1,1,1],"固態(tài)層",1280,720,1);
var mask = layer.Masks.addProperty("Mask");
var maskShape= mask.property("maskShape");
var maskShapeValue = maskShape.value;
maskShapeValue.vertices = [[100,100],[800,100],[800,440],[100,400]];
maskShape.setValue(maskShapeValue);
app.endUndoGroup();

第5章: 程序語言基礎(chǔ)

變量

“變量”是用來存“數(shù)據(jù)”的容器

  • 使用方法:var 變量名 = 數(shù)據(jù)內(nèi)容

var (定義變量的方法)、后面接 “變量名”允蚣、“=”于颖、“數(shù)據(jù)內(nèi)容”
"=" 為變量賦值(可以先聲明變量,在用到這個變量時嚷兔,再給它賦值也可以)
如var a,b,c,d,e,f,g
a=1,b=2,c=3
"數(shù)據(jù)內(nèi)容"它可以是數(shù)字森渐、字符串、布爾值....

  • 變量名
  1. 變量名不能是特殊字符(如:中文冒晰、特殊符號)
  2. 變量開頭字符不能是數(shù)字
  3. 變量名是唯一性的
var my_comp;//這種方法比駝峰命名看起來更舒服一些
var myComp同衣;//駝峰命名法

編寫代碼的一些習(xí)慣

// 雙引號 后面的內(nèi)容為備注,它不會運(yùn)行(這一點(diǎn)對初學(xué)者很重要)
養(yǎng)成良好的習(xí)慣壶运,在每一行的代碼結(jié)束的位置輸入一個“耐齐;”分號
輸入子層級代碼時,要相對父代碼蒋情,留出一個“tab”的縮進(jìn)埠况,這樣的代碼看起更友好

數(shù)據(jù)類型

  • 字符串
    "你好","5"

可以使用雙引號、或單引號

  • 整數(shù)
    0,1,3, 4 ,5
  • 浮點(diǎn)數(shù)
    0.5,8.85,0.001
  • 布爾值boolean
    true,false

true 表示:是棵癣、1辕翰、啟用
false 表示:不是、0狈谊、不啟用

  • 對象object
    很多數(shù)據(jù)的一個組合
  • 未定義undefined
  • 空值null
    能用整數(shù)就不要用浮點(diǎn)數(shù)
    一定要用浮點(diǎn)數(shù)的時候喜命,可以在數(shù)字后面加一個.f
    如:30.f
    它表示的就是一個浮點(diǎn)數(shù)

字符串的方法

更全面的有關(guān)字符串的方法請訪問:https://www.cnblogs.com/imguo/p/5768717.html

var i = "abcdefjhljklmn"
alert(i.length()); //.length() //可以求出當(dāng)前字符串的長度
alert(i.charAt(3)); //編程中第一位是0沟沙、這里的3就是第四位“d”
//.charAt()//查看某個位置的字符是什么內(nèi)容
alert(i.slice(0, 10)); //切塊的作用 這里的i.slice(0,10) 表示的就是保留第一位到第十一位中間的字符
alert(i.slice(0, -1)); //保留全部字符
alert(i.toUpperCase()); //把內(nèi)容全部轉(zhuǎn)為大寫
alert(i.toLowerCase()); //把內(nèi)容全部轉(zhuǎn)為小寫

數(shù)據(jù)類型的轉(zhuǎn)換

轉(zhuǎn)換為整數(shù)
parseInt(texe,base)
parseInt("3");
parseInt(3.1415926);//它會直接去掉小數(shù)部分
texe接收字符串(字符串內(nèi)容為數(shù)字)或數(shù)字壁榕,字符串的內(nèi)容必須是數(shù)字
默認(rèn)base就是10矛紫,一般不用管

轉(zhuǎn)換為浮點(diǎn)數(shù)
parseFloat(texe,base)
如:alert(parseFloat("3")+1.5);

NaN 表示轉(zhuǎn)化出錯

轉(zhuǎn)換為字符串
toString();
如:toString(5400215); //它得到的結(jié)果就是"5400215"

運(yùn)算符

數(shù)字之間的運(yùn)算

var a = 123+321;//加
var b = 12-321;//減
var c = 123*321;//乘
var d = 123/321;//除
var e = 123%321;//求模
//求模指的是:a除b除不盡护桦,第一次留下的余數(shù)含衔、求模運(yùn)算常用來判斷數(shù)值是“奇數(shù)”還是“偶數(shù)”

字符串的運(yùn)算

var i = “我不知道”+“你的名字”;//得到的結(jié)果就是:“我不知道你的名字”

自加和自減

var a = 5;
a++;
//++的意思:就是自加1(自己+自己得到的結(jié)果)
//這里的a++ 就是a=6

var b = 5;
b--;
//--的意思:就是自減1(自己-自己得到的結(jié)果)
//這里的b-- 就是b=4

var c = 5;
c+=4;
//+=的意思:就是自加一個數(shù)(自己加一個數(shù)煎娇,然后得到的一個結(jié)果)
//這里的c+=4 就是 c=9

var d = 5;
d-=4;
//-=的意思:就是自加一個數(shù)(自己減一個數(shù)二庵,然后得到的一個結(jié)果)
//這里的d-=4 就是 c=1

//同樣的這種方法適用于“自乘”、“自除”

var e = 2;
e*=5;//這樣返回的結(jié)果就是e=10

var f =2;
var g = f*5缓呛;//這樣f的值它依舊還是2

自加催享、自減、自乘...的原理是:
自己和一個值進(jìn)行運(yùn)算哟绊,得到的結(jié)果因妙,返回給自己

運(yùn)算優(yōu)先級

程序中運(yùn)算優(yōu)先級和“傳統(tǒng)數(shù)學(xué)”中運(yùn)算優(yōu)先級是一樣的:默認(rèn)是先算乘除再算加減
強(qiáng)制優(yōu)先:把要優(yōu)先運(yùn)算的內(nèi)容,用“()”括號括起來行了
括號之間存在嵌套票髓,會先算最底層的
如:((52-89)+500)*29

比較和邏輯運(yùn)算符

> 大于
< 小于
= 賦值(把左邊的內(nèi)容賦值給右邊的變量)
== 比較(判斷2邊的內(nèi)容是否相等用的是==)
!(比較內(nèi)容) 求非(求非得內(nèi)容要括起來)
!= 不等于
>= 大于等于
<= 小于等于

成立就是返回為ture攀涵、不成立返回的就是false

流程控制

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市洽沟,隨后出現(xiàn)的幾起案子以故,更是在濱河造成了極大的恐慌,老刑警劉巖裆操,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怒详,死亡現(xiàn)場離奇詭異,居然都是意外死亡踪区,警方通過查閱死者的電腦和手機(jī)昆烁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缎岗,“玉大人静尼,你說我怎么就攤上這事〈矗” “怎么了茅郎?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長或渤。 經(jīng)常有香客問我系冗,道長,這世上最難降的妖魔是什么薪鹦? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任掌敬,我火速辦了婚禮惯豆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奔害。我一直安慰自己楷兽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布华临。 她就那樣靜靜地躺著芯杀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪雅潭。 梳的紋絲不亂的頭發(fā)上揭厚,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音扶供,去河邊找鬼筛圆。 笑死,一個胖子當(dāng)著我的面吹牛椿浓,可吹牛的內(nèi)容都是我干的太援。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼扳碍,長吁一口氣:“原來是場噩夢啊……” “哼提岔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起笋敞,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤碱蒙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后液样,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體振亮,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年鞭莽,在試婚紗的時候發(fā)現(xiàn)自己被綠了坊秸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡澎怒,死狀恐怖褒搔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喷面,我是刑警寧澤星瘾,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站惧辈,受9級特大地震影響琳状,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盒齿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一念逞、第九天 我趴在偏房一處隱蔽的房頂上張望困食。 院中可真熱鬧,春花似錦翎承、人聲如沸硕盹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘩例。三九已至,卻和暖如春甸各,著一層夾襖步出監(jiān)牢的瞬間垛贤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工痴晦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留南吮,地道東北人琳彩。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓誊酌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親露乏。 傳聞我的和親對象是個殘疾皇子碧浊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345