如何系统的学习ae表达式

AE表达式精通大法AE表达式精通大法设计树百家号AE表达式一直是大家学习AE过程中的一道坎,涉及代码网上教程资源又不多,于是很多人都没有完全地领略到AE表达式的魅力。于是这一次,我花了大量时间学习研究同时结合自己以往在工作中对表达式的运用心得。为大家带来这套系统的表达式教学。在学习表达式之前我们需要对表达式有个基本的了解。首先我们需要排除一个想法,表达式真的像我们想象的那么难学吗?答案是否定的!
其实表达式并不像我们想象的那样复杂,它比真正意义上的编程要简单很多。我们只需要了解一些表达式的规则,以及一些常用表达式的命令,我们就足以应付工作中遇到的所有表达式的问题,你同样可以使用表达式制作一些非常酷的效果。
所以通过这篇文章我们先来简单的了解一下AE表达式的一些规则,包括一些常用的表达式命令,我这里做个简单的讲解。1.什么是表达式?我们首先要对表达式有个了解:表达式是AE内部基于Java s cript编程语言开发的编辑工具。表达式的语法及命令都是源自JS这门语言,如果有对JS语言熟悉的朋友,使用AE里面的表达式的话就会非常轻松。虽然说表达式都是基于JS语言的,但表达式要比正在使用JS语言开发要简单的多得多,大家可以把它看作一个简化版的编程过程。2.在学习表达式之前我们首先明白这两点(1)所有的表达式只可以添加在AE里面的可编辑动画关建帧的属性上在AE里面表达式只可以输入在可编辑关键帧的属性上,比如位置,旋转,缩放等......
所以我们使用表达式的目的是对一些动画属性进行控制,从而提高我们的工作效率或者制作出更棒的动画效果!(2)并不是所有地方都需要表达式,我们要根据需求选择使用关键帧或者表达式在AE里面并不是任何时候使用表达式都比关键帧要方便,有的时候关键帧的效果或者效率反而比表达式更好更快。所以大家要根据不同的效果选择打关键帧或者表达式,或者两者的结合。我们最终的目的还是最后的效果。3.如何在AE中添加表达式我们首先了解一下如何在AE里面添加表达式正如我上面所说,表达式只可以输入在可编辑关键帧的属性上。任何一个AE里面可以打关键帧的属性前面都有一个小码表,也就是我们打关键帧需要点击的那个小码表。
我们只需要按住键盘上的ALT键+鼠标左键点击这个小码表,就可以调出对应属性的表达式输入框。我们需要做的就是在输入框内输入表达式即可4.表达式工具我们按住ALT+鼠标左键点击属性前面的小码表除了调出表达式输入框之外,还会调出表达式的工具。表达式工具从左往右依次是:表达式开关、表达式图表、拉索工具、表达式语言菜单1、表达式开关:打开或者关闭表达式效果2、表达式图表:查看表达式数据变化曲线3、拉索工具:链接属性用于表达式4、语言菜单:调用AE内置表达式函数命令5.表达式书写的一些规则(1)针对不同属性,表达式最终输出的是不同的数据类型在AE里面不同的属性的参数是不一样的,大致可以分为4种:单个数值、数组、布尔值、字符串数值和数组我们最常使用的就是单个数值和数组,我们来了解一下单个数值和数组的区别。由上图可见单个数值和数组的区别,我们最常调节的就是单个数值。但是在AE里面的很多属性它其实是由多个数值组成的,我们把这种多个数值组成的数据类型叫做数组布尔值和字符串布尔值主要是起开关作用的,它主要就是两个值:true和false,true代表“真”、false代表“假”。可以用数值0和1代表:0代表假、1代表真字符串不太常用,我们做个简单了解,它主要是针对文本工具的:如“你好”(字符串需要用双引号“”括起来,双引号里面你可以填任何信息,中文、英文或者数字都可以,但它只是字符的意义)(2)数组的书写格式上文提到数组是由多个数值组成的,所以数组的书写格式如:[10,10]数组需要使用中括号[]括起来,中括号里面你可以填多个数值(要填几个数值取决于对应的属性),每一个数值之间用逗号隔开6.变量的使用在AE表达式书写的时候,并不是我们书写的所有内容表达式都能识别。表达式一般能识别的就是表达式内部的一些函数命令,我们可以直接在“表达式语言菜单”中调用。除了内部的一些函数命令外,表达式还可以识别我们外部自定义的变量(1)什么是变量?变量是我们用来存储数值用的,你可以把它当做一个容器。比如:a=100我们就把100这个数值存储在a里面,则a这个时候就是一个变量变量需要使用等于号“=”来进行赋值你可以使用任何单词作为变量,字母a也好、字母b也好、单词也好、或者汉语拼音都可以,但是不能使用中文7.表达式内置的函数命令上面说道AE表达式只能够识别内置的函数命令和自定义的变量。内置的函数命令就是我们最常使用的一些代码了,我们直接可以在AE表达式工具里面的“表达式语言菜单”里面进行调用表达式语言菜单里面包含了所有我们书写表达式需要用到的函数命令。本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。设计树百家号最近更新:简介:UI设计经验、资源、分享交流作者最新文章相关文章其中用到的知识点包括操控点和表达式。操控点没什么好说,就是钉钉子嘛,但是表达式很有意思,所以我总结了几个初次接触表达式的新手可能会遇到的问题,也是我掉过的坑(往事如烟):
一、刚使用ae表达式会遇到很多一时无法理解的“术语”
1)对象(object):也叫物体或者物件,代表世界万物,一切皆为对象。在AE里,合成、图层、导入的素材或者路径形状等等,他们都是对象。
2)属性:例如人的身高、体重等都是人的属性。在ae里就指对象的position、scale、rotation等等,每个属性都会有一个值。要注意的是对象的属性也是对象,所以属性也会有自己的属性~(好复杂T T),例如某合成的position属性又具有两个属性分别是x和y。
3)方法:指对象可以做什么或者有什么功能,例如人有一个“方法”叫做“吃饭”,使用这个“方法”就可以补充能量。同样在ae里所有“合成”都有一个方法叫“layer”,可以找到自己内部的某一个图层。
4)参数:前面说到人有一个“方法”叫“吃饭”,使用这个“方法”就可以补充能量,但是天下没有免费的午餐,要调用这个方法的前提是得有饭,这个“饭”就是参数。同样在ae里我们调用一个“方法”通常需要传递一个“参数”,比如上面提到的“layer”方法,调用时需要传递图层名,类似:
thisComp.layer("layer_name");
其中thisComp指当前合成,layer_name是要调用的图层的名字,也就是方法所要求的参数。不过也不是所有方法都需要参数。
5)返回值:基本上所有“方法”运行完都会给我们一个结果,就像你吃完饭会觉得饱了或者还不够,女人分娩会返回一个男孩或者女孩或者其他情况。
6)数组和索引:例子
array = [a,b,c];
这是一个名叫array的对象,因为它的值是形如 [x,y...] 的造型,所以他是一个数组,而且这个数组包含3个元素分别是a,b,c。如果我们要拿到array内部的元素a的值,就需要知道a的“索引”,现在我们可以看到a是array的第一个值,所以他的索引是0(没错索引都是从0开始的!),所以
array_a = array[0];
这样就将array内部元素a的值赋给了array_a对象~
好了,还有更多其他术语什么的对新手来说应该还不需要,我们只了解上面几个应该就够了。最后来看看下面这个语句,如果能说出发生了什么那应该就没问题了:
thisComp.layer(1).position.valueAtTime(time+2);
对象“thisComp”调用方法“layer”,传入的参数为图层的索引:1(指合成里的第二个图层)。“layer”方法返回了图层2之后,获取图层2的属性position,然后调用position对象的valueAtTime方法,传入的参数为“time+2”。其中time是全局变量,指当前时间(我不解析全局和变量的概念了,不然没完没了,有兴趣可自行百度)。最后valueAtTime方法返回position在当前时间后4秒的值[x,y]。
二、属性的维度问题
像上面的例子,position 的值是一个由两个元素组成的数组,分别是x和y坐标的数值,而不透明度opacity的值只是一个数值,所以相互之间不能直接赋值,不然会报错。在ae表达式里称这种情况为维度不同,以下是各种属性的维度参考:
jking的这篇文章末尾也有提到,可惜当时我还没看到这里,而且自己的感悟比较迟钝所以还是被坑了一下下。jking有提到1维属性如何赋值给2维属性,但是反过来呢?如果你已经理解前面对“数组”概念的解析那么应该已经有答案,对就是这样:
opacity = scale[0];//2维属性赋值给1维属性 position = [opacity,opacity];//1维属性赋值给2维属性
通过索引0可以获得数组scale的第一个元素“x”(宽度缩放值),这个值是一维的,所以可以赋值给一维的opacity属性,再将opacity属性的值分别赋值给position数组的两个元素。顺便一提,“//”号代表注释,后面的内容都不会被编译。
三、方法的多态问题
“多态”是什么意思呢?听名字应该能大概猜到吧,就是指某个方法在不同的调用环境下会有不同的效果。具体我们以wiggle方法为例子说一下。
wiggle这个函数似乎经常用到,因为能产生随机抖动。关于wiggle的用法和各个参数的含义其实认真参阅官方文档应该没问题,但是我这里还是多说几句。首先通常我们只用wiggle的前两个参数:
v = wiggle(5, 10);
上面表示wiggle的抖动频率为5,幅度为10。那么问题来了,wiggle的返回值是一维的还是二维的?答案是要看这个表达式用在哪里。什么意思?请看例子:
上面两个表达式都是对的,由于图1表达式在二维属性position中调用,所以表达式里的wiggle(3,50) 相当于position.wiggle(3,50),而当wiggle被一个二维属性调用时,他返回的结果也是一个二维的值,形如[x,y],也就是一个拥有两个元素的数组,所以可以直接赋给position。
而图2中,wiggle是被一个一维属性调用的,所以他返回的结果也是一个一维的值,所以也可以直接赋值给一维属性opacity。
没错这就是wiggle的多态表现~
可以看到那个黄色三角形表示这段表达式是错误的,因为虽然这段表达式是写在一维的opacity属性中,但是wiggle方法却是由二维的position属性调用的。所以返回值也是二维的,不能直接赋值给opacity属性。只要改成下面这样就可以了~:
v = transform.position.wiggle(3,50)[0]; //加上“[0]”表示wiggle返回数组的第一个元素的值 v
所以大家以后使用wiggle时一定要分清楚wiggle是由什么维度的属性调用的,不然一不小心就会犯不同纬度的属性互相赋值的错误。当然wiggle只是一个例子,其他方法也可能会有多态性,典型如valueAtTime等等(抱歉我认识的方法还比较少。。),相信大家可以举一反三。AE教程AE零基础到精通AE表达式学习AE影视特效教程-学习考试视频-搜狐视频
AE教程AE零基础到精通AE表达式学习AE影视特效教程
推荐出品人更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
举报视频:
举报原因(必填):
请说明举报原因(300字以内):
请输入您的反馈
举报理由需要输入300字以内
感谢您的反馈~
请勿重复举报~
请刷新重试~
收藏成功,可进入
查看所有收藏列表
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
用爱奇艺APP或微信扫一扫,在手机上继续观看
当前播放时间:
一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
轻松学习AE表达式 第16课:使用表达式
正在检测客户端...
您尚未安装客户端,正在为您下载...安装完成后点击按钮即可下载
30秒后自动关闭
轻松学习AE表达式 第16课:使用表达式">轻松学习AE表达式 第16课:使用表达式
请选择打赏金额:
播放量12.7万
播放量数据:快去看看谁在和你一起看视频吧~
更多数据:
热门短视频推荐
Copyright (C) 2018 & All Rights Reserved
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
正在为您下载爱奇艺客户端安装后即可快速下载海量视频
正在为您下载爱奇艺客户端安装后即可免费观看1080P视频
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
后才可以领取积分哦~
每观看视频30分钟
+{{data.viewScore}}分
{{data.viewCount}}/3
{{if data.viewCount && data.viewCount != "0" && data.viewCount != "1" && data.viewCount != "2" }}
访问泡泡首页
+{{data.rewardScore}}分
{{if data.rewardCount && data.rewardCount != 0 && data.getRewardDayCount != 0}}1{{else}}0{{/if}}/1
{{if data.rewardCount && data.rewardCount != 0 && data.getRewardDayCount != 0}}
+{{data.signScore}}分
{{data.signCount}}/1
{{if data.signCount && data.signCount != 0}}
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制

我要回帖

 

随机推荐