美文网首页
【学习笔记】AE脚本编写教程

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

作者: 侯茂桐 | 来源:发表于2019-03-27 12:55 被阅读0次

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

    流程控制

    相关文章

      网友评论

          本文标题:【学习笔记】AE脚本编写教程

          本文链接:https://www.haomeiwen.com/subject/ythzvqtx.html