【学习笔记】AE脚本编写教程

教程的视频内容为在线学习网站【沃CG】的付费内容,这是我在学习过程中做的笔记

@toc

第1章: 课程介绍

课程介绍

ae脚本可以代替重复性的人工操作和复杂的数学计算,设计师能有更多的时间专注于视觉表现上
编写ae脚本的门槛:编程能力、英语能力

  • 第一天:ae表达式和脚本、插件的区别;JavaScript基础(数据类型、变量)
  • 第二天:编程语言流程控制的部分(判断、循环、函数)、面向对象
  • 第三天:ae的各个接口、用脚本控制合成、图层的属性
  • 第四天:添加关键帧、脚本界面的编写
  • 第五天:综合脚本的开发案例

第2章: 脚本基础

ae表达式、脚本、插件的区别

  • 表达式
    表达式加在属性上(为属性赋值)、表达式每一帧都会运算一遍

比如:wiggle(1,20)

  • 脚本
    脚本使用JavaScript编写,脚本语言不需要编译,脚本语言是执行性的语言
    ae首选项,要启用这两项
    allow scripts to write files and access network(允许脚本访问网络)
    enable JavaScript debugger(启用JavaScript 调试器)
  • 插件
    插件使用C、C++编写
    插件分为:特效插件、文件导入导出插件、通用插件、渲染引擎插件

通用插件:它在ae其他的菜单栏中出现,有自己的独立界面,如ae的二维动力学插件“牛顿”

第3章: ExtendScript Toolkit软件介绍

EXTK软件介绍
ExtendScript是用JavaScript拓展出来的,他们的基础语法是一样的

软件界面

V0zRBT.png

切换脚本在那个软件里运行


V0z94t.png

运行在“主空间


V0zLbF.png

运行、暂定、停止、后面三个是在debug时用到

debug :排除错误

JavaScript console(JavaScript控制台):输出脚本运行数据

undefined未定义的

data browser:用于浏览数据
function:定义的函数在这个面板显示出来
breakpoints:打的断点在这个面板显示
call stack:当函数存在嵌套关系时,一个函数调调用了另一个函数,这个面板告诉你代码运行的路线是怎么样的
scripts:列出软件现有的脚本

菜单栏help:中有一些文档

《adobe intro to scripting》:adobe脚本编写的介绍

《javascript tools guide cc》:adobe脚本编写中可以操作的通用功能(文件的写入、窗口界面UI、adobe软件之间的交互、访问网络、C、C++写的库、访问XML文件、访问XMP文件)
xml用来存配置文件
xmp,比如给视频加一个头文件,注释等…

设置字体
edit>preference>fonts and colors
节子老师推荐使用:consolas

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

第4章: AE基础

通过这个小案例:在ae中创建一个合成、在这个合成中新建一个固态层,并画一个mask
简单了解一下脚本是如何来控制ae里的元素
这些“元素”在JS中都被称之为“对象”

//标注版
app.beginUndoGroup("创建一个合成、固态层画一个mask");//回退组,ctrl+z撤销时,会撤销这整个组的内容
var comp = app.project.items.addComp("合成1",1920,1080,1.0,30.0,24); 
//("合成名字"、宽度、高度、像素宽高比、持续时间、帧数率)
var layer = comp.layers.addSolid([1,1,1],"固态层",1280,720,1);
//255=1 0-255 就是0-1
//(颜色、固态层名字、宽度、高度、像素宽高比、持续时间)
var mask = layer.Masks.addProperty("Mask");//给layer加一个mask
//mask、特效的性质 都是一个Property(属性)
var maskShape= mask.property("maskShape");//获取maskpath属性
var maskShapeValue = maskShape.value//获取值
maskShapeValue.vertices = [[100,100],[800,100],[800,440],[100,400]]
//设置新的值
maskShape.setValue(maskShapeValue);//为新的值生效     
app.endUndoGroup();
//无标注版
app.beginUndoGroup("创建一个合成、固态层画一个mask");
var comp = app.project.items.addComp("合成1",1920,1080,1.0,30.0,24); 
var layer = comp.layers.addSolid([1,1,1],"固态层",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章: 程序语言基础

变量

“变量”是用来存“数据”的容器

  • 使用方法:var 变量名 = 数据内容

var (定义变量的方法)、后面接 “变量名”、“=”、“数据内容”
"=" 为变量赋值(可以先声明变量,在用到这个变量时,再给它赋值也可以)
如var a,b,c,d,e,f,g
a=1,b=2,c=3
"数据内容"它可以是数字、字符串、布尔值....

  • 变量名
  1. 变量名不能是特殊字符(如:中文、特殊符号)
  2. 变量开头字符不能是数字
  3. 变量名是唯一性的
var my_comp;//这种方法比驼峰命名看起来更舒服一些
var myComp;//驼峰命名法

编写代码的一些习惯

// 双引号 后面的内容为备注,它不会运行(这一点对初学者很重要)
养成良好的习惯,在每一行的代码结束的位置输入一个“;”分号
输入子层级代码时,要相对父代码,留出一个“tab”的缩进,这样的代码看起更友好

数据类型

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

可以使用双引号、或单引号

  • 整数
    0,1,3, 4 ,5
  • 浮点数
    0.5,8.85,0.001
  • 布尔值boolean
    true,false

true 表示:是、1、启用
false 表示:不是、0、不启用

  • 对象object
    很多数据的一个组合
  • 未定义undefined
  • 空值null
    能用整数就不要用浮点数
    一定要用浮点数的时候,可以在数字后面加一个.f
    如:30.f
    它表示的就是一个浮点数

字符串的方法

更全面的有关字符串的方法请访问:https://www.cnblogs.com/imguo/p/5768717.html

var i = "abcdefjhljklmn"
alert(i.length()); //.length() //可以求出当前字符串的长度
alert(i.charAt(3)); //编程中第一位是0、这里的3就是第四位“d”
//.charAt()//查看某个位置的字符是什么内容
alert(i.slice(0, 10)); //切块的作用 这里的i.slice(0,10) 表示的就是保留第一位到第十一位中间的字符
alert(i.slice(0, -1)); //保留全部字符
alert(i.toUpperCase()); //把内容全部转为大写
alert(i.toLowerCase()); //把内容全部转为小写

数据类型的转换

转换为整数
parseInt(texe,base)
parseInt("3");
parseInt(3.1415926);//它会直接去掉小数部分
texe接收字符串(字符串内容为数字)或数字,字符串的内容必须是数字
默认base就是10,一般不用管

转换为浮点数
parseFloat(texe,base)
如:alert(parseFloat("3")+1.5);

NaN 表示转化出错

转换为字符串
toString();
如:toString(5400215); //它得到的结果就是"5400215"

运算符

数字之间的运算

var a = 123+321;//加
var b = 12-321;//减
var c = 123*321;//乘
var d = 123/321;//除
var e = 123%321;//求模
//求模指的是:a除b除不尽,第一次留下的余数、求模运算常用来判断数值是“奇数”还是“偶数”

字符串的运算

var i = “我不知道”+“你的名字”;//得到的结果就是:“我不知道你的名字”

自加和自减

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

var b = 5;
b--;
//--的意思:就是自减1(自己-自己得到的结果)
//这里的b-- 就是b=4

var c = 5;
c+=4;
//+=的意思:就是自加一个数(自己加一个数,然后得到的一个结果)
//这里的c+=4 就是 c=9

var d = 5;
d-=4;
//-=的意思:就是自加一个数(自己减一个数,然后得到的一个结果)
//这里的d-=4 就是 c=1

//同样的这种方法适用于“自乘”、“自除”

var e = 2;
e*=5;//这样返回的结果就是e=10

var f =2;
var g = f*5;//这样f的值它依旧还是2

自加、自减、自乘...的原理是:
自己和一个值进行运算,得到的结果,返回给自己

运算优先级

程序中运算优先级和“传统数学”中运算优先级是一样的:默认是先算乘除再算加减
强制优先:把要优先运算的内容,用“()”括号括起来行了
括号之间存在嵌套,会先算最底层的
如:((52-89)+500)*29

比较和逻辑运算符

> 大于
< 小于
= 赋值(把左边的内容赋值给右边的变量)
== 比较(判断2边的内容是否相等用的是==)
!(比较内容) 求非(求非得内容要括起来)
!= 不等于
>= 大于等于
<= 小于等于

成立就是返回为ture、不成立返回的就是false

流程控制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342