0 %

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

2025-05-31 12:08:11

教程的视频内容为在线学习网站【沃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

"数据内容"它可以是数字、字符串、布尔值....

变量名

变量名不能是特殊字符(如:中文、特殊符号)

变量开头字符不能是数字

变量名是唯一性的

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

流程控制

Posted in 世界杯小组赛分组
Copyright © 2088 2034年世界杯_足球中国世界杯预选赛 - qdhuaxue.com All Rights Reserved.
友情链接