AE表达式图解+java基础语言图解 先补充一些后面用表达式的时候可能用的到一些小知识点。(不理解没关系,死记就可以了,后面自然懂) 1.点击名字后按回车键就可以重复名 选取图层 按 shift+ctrl+Y 可以更改设置 2.给合成打标记点 shift+数字按键 给图层打标记点 按 * 按键 3. value 返回类型:数值、 数组或字符串 表示当前时间属性的值 index 返回类型:数值 返回指定对象的在 它所处的同一组 属性关系的序值 wiggle (频率,振幅) 这三个表达式经常用 所以就先丢这了。 4. [ ] 中括号里面 是数组 数与数直接用逗号隔开 当 括号里 1 个数的时候 为 1 维度 2个的时候 2 维度 以此类推 如下图 可以将数组对象分配给变量 ,从而应用到另外的表达式中 且 变量后跟 [0] 表示第一个 纬度值 [1]表示第二个 纬度值 以此类推 如下图 颜表示为四维数组 [red, green, blue, alpha]。在颜深度为 8 bpc 或 16 bpc 的项目中 颜数组中的每个值都介于 0(黑)到 1(白)之间。例如,red 可以介于 0(无)到 1(红)之间。因此,[0,0,0,0] 是黑且透明,[1,1,1,1] 是白且完全不透明。 在颜深度为 32 bpc 的项目中,允许小于 0 和大于 1 的值。 5.运算符号(后面的 java基础语言会提到) 6. 在A表达式E里面 返回逻辑 值 为 true=1 false=0 如图 另外后面 表达式中 会出现 用 0 1 2 3 4 ..... 代替返回的某一属性 在此不举例 7. 当 某表达式返回 字符串 的时候 这个表达式可以应用在 文字上 8.给表达式添加注译 // 内容 or /* 内容* / 如图 9. 在AE 中 当前合成 左上角的顶点 为空间坐标轴的原点 即 原点 [0,0,0] 右下角顶点 值为 [x=合成的宽,Y=合成的高,z=0] ======================================================================= 这图看不懂没关系一开始我也看不懂 233 ,记住就可以。 ------------------------------------------------------------------------------------------------------------- 这表达式的 意思是 返回当前合成的图层名为 "Solid1"的旋转值 ( 括号内为数值时候不需要双引号 为名字的时候要加 数值则为图层序号) 要想表达式正确运行就要书写好表达式,及确认这个表达式 最终返回的是什么 将其应用到正确的位置上才能生效 (若 表达式 返回 1纬度 数值 却应用到 2纬度属性上则出错 , 例如上述表达式用到位置属性上 是错的) 若要从某图层提取数据的属性, 必须首先标定一个全局对象 确定了全局对象后, 我们就需要设置属于该对象的次级对象、属性或者是方法 如左图红线圈的是(全局) 对象 ,它们里面的属性和方法 要跟在它们本身后面 才能生效 以下顺序是按着上面的AE表达式栏来着 ========================= 全局对象、属性和方法 ========================= thisProperty 返回类型:属性 指定属性 这个是补充的 AE表达式栏里面没有 后面会用到 thisLayer 返回类型:图层,灯光,摄像机 指定当前图层 即对本层的描述 AE表达式栏里面没有 若是返回本图层的某个属性则可以简写 例如, thisLayer.opacity 和 opacity 结果一样 comp(name) 返回类型: 合成 按名字指定其他的合成对象 thisComp 返回类型: 合成 指定当前合成 time 返回类型:数值 返回 当前时间线所在的时间值 减去 合成开始的时间值 footage(name) 返回类型:素材 指定 项目 里的素材的对象 colorDepth 返回类型:数值 返回8或16表示的彩深度位数值。 例如, 当项目的每通道的彩深度为16位时colorDepth 返回16 。 以下七个表达式建议把后面的搞懂后再回头看 这样更容易理解 1.posterizeTime(framesPerSecond) 返回类型:数值 framesPerSecond 为其余表达式运行的帧速率 此表达式允许您将属性的帧速率设置为低于合成的速率。例如,以下表达式每秒使用随机值更新一次属性值 posterizeTime(1); random() 当括号里面数值为2 时 数值变化 2次 为3 时数值变化 3次 类推... 2.timeToFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false) 返回类型:数值 这个表达式 得出的值为 括号里面的两个数前后相乘 如下图 thisComp.displayStartTime 表示返回当前合成的开始时间值 thisComp.frameDuration 表示 返回 当前合成的 每秒 一帧 的持续时间值 ( 这两个在后面的 合成的属性和方法 中 有图解) isDuration = false 默认值 可以删除 即 fps = 1.0 / thisComp.frameDuration 表示当前合成每秒的帧数 即帧数率 timeToFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false) 这个表达式 得出得值就是当前时间的帧数值 如下图 3.framesToTime(frames, fps = 1.0 / thisComp.frameDuration) 返回类型:数值 为上面的逆运算timeToFrames () 得出的值为 括号里面的两个数前后相除 4.timeToTimecode(t = time + thisComp.displayStartTime, timecodeBase = 30, isDuration = false) 返回类型:字符串 这个表达式是 将 t 的值转换为表示时间码的字符串 timecodeBase 用于指定 一秒内的帧数 如下图 5.timeToNTSCTimecode(t = time + thisComp.displayStartTime, ntscDropFrame = false, isDuration = false) 返回类型:字符串 这个表达式是 将 t 转换为表示 NTSC 时间码的字符串电影胶片24帧/秒 PAL制25帧/秒 NTSC 29.97帧/秒 合成 设置 为 29.97 帧 的时候 这个表达式时间码才能正确显示 否者如下图 当 ntscDropFrame = false 默认值的时候 字符串为 NTSC 未丢帧时间码 当 ntscDropFrame = true的时候 字符串为 NTSC 丢帧时间码 如下图 6.timeToFeetAndFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, framesPerFoot = 16, isDuration = false) 返回类型:字符串 这个表达式是 将 t 的值转换为表示胶片和帧的英尺的字符串 framesPerFoot 参数指定一英尺胶片中的帧数 默认为16 如图 7.timeToCurrentFormat(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false, ntscDropFrame = scDropFrame) 返回类型:字符串 这个表达式是 将 t 的值转换为表示采用当前项目设置显示格式的时间的字符串 如图 ================= 向量数学方法 ================= add(vec1, vec2) 返回类型:数组 vec1 和 vec2 是数组 返回 两个数组 相同纬度 数的 相加值 sub(vec1, vec2) 返回类型:数组 vec1 和 vec2 是数组 返回 两个数组 相同纬度 数的 相减值 mul (vec1, amount) 返回类型:数组 vec1 是数组, amount 是数值 返回数组的每个元素被 amount相乘。 div (vec1, amount) 返回类型:数组 vec1 是数组, amount 是数值 返回数组的每个元素被 amount相除。 Clamp(value, limit1, limit2) 返回类型:数值或数组 value, limit1, limit2 是数组 限制value中每个元素的值在 limit1 到 limit2 之间 dot(vec1, vec2) 返回类型:数值 vec1 和 vec2 是数组 返回 两数组的点积 即 结果返回 为两数组 同维度 数的乘积再相加 的值 cross(vec1, vec2) 返回类型:数组 2 or 3 维度 vec1 和 vec2 是数组 [2 or 3] 返回 两数组的向量积 向量积也被称为矢量积、叉积(即交叉乘积)、外积, 是一种在向量空间中向量的二元运算。与点积不同,它的运算结果是一个向量而不是一个标量。 并且两个向量的叉积与这两个向量垂直。 (具体算法自行百度,其实是我不知道该怎么解释这个算法 ← ←) normalize(vec) 返回类型:数组 vec 是数组 这个表达式 标准化向量 使其长度为 1 normalize 方法是执行运算 div(vec, length(vec)) 的简便方法 length(vec) 返回类型:数值 vec是数组 返回向量的长度 length(point1, point2) 返回类型:数值 point1 与 point2 是数组 返回两点之间的距离 即 两数组的 同维度数 相减的绝对值 再相减的绝对值 length(point1, point2) 与length(sub(point1, point2)) 返回值 一样 如下图 有 两个 表达式 所处位置不对故不能呈现正确值 所以是错误的 lookAt(fromPoint, atPoint) 返回类型:Array(角度的数值,三维度) 参数 fromPoint 是您要定向的图层的世界空间中的位置。参数 atPoint 是您要将图层指向的世界空间中的点。返回值可用作方向属性的表达式,使图层点的 z 轴指向 atPoint。 此方法对摄像机和光照特别有用 (AK大神教程的41期 有讲到 物体 面朝 摄像机的 ) 如图 用了表达式 lookAt(position,thisComp.layer("Light 1").transform.position) 后 图层和灯光的 z 轴朝向 一致 即 移动灯光位置图层一直面朝 着 灯光 ========================= 随机数方法 ========================= 字符串转数组怎么转seedRandom(seed, timeless=false) 返回类型:无类型 seed 是一个数, 默认 timeless 为 false 取现有的seed 增量一个随机值 如图 单个表达式 seedRandom(seed, timeless=false)是无效的 底下还要跟一个其他的随机表达式 random() 返回类型:数值 返回0和1间的随机数 random(maxValOrArray) 返回类型:数值或数组 当括号里的是一个数 返回 0到maxVal间的数, 当括号里面的是两个以上的数组 返回与maxArray相同维度的数组, 数组的每个元素在 0 到 maxArray之间 random(minValOrArray, maxValOrArray) 返回类型:数值或数组 当minValOrArray 和 maxValOrArray 是数值的时候 返回一个他们之间的数 当minValOrArray 和 maxValOrArray 是数组的时候 返回相同维度的数组,其每个元素在两数组 相同维度数 的之间 例如, random([100, 200], [300, 400]) 返回数组的第一个值在 100 到300间, 第二个值在 200 到400间.如果两个数组的维度不同,较短的一个后面自动用0补齐 以下三个表达式 数 与数组 书写同上 取值类似 成钟型分布 百分90%在两者间 剩下 取值 在最大值和最小值附近 gaussRandom() gaussRandom(maxValOrArray) gaussRandom(minValOrArray, maxValOrArray) noise(valOrArray) 返回类型:数值 valOrArray是一个数或数组 返回一个 -1到1间的数 注:当括号里的单数 为整数的时候 取值为0 数组不会 ========================= 插值方法 ========================= linear(t, value1, value2) 返回类型:数值或数组 {t 是数值, value1 和 value2 是一个数或数组} 当t的范围从0到1时,返回一个从value1到value2的线性插值。 当 t <= 0时返回value1,当 t >= 1时返回 value2 linear(t, tMin, tMax, value1, value2) 返回类型:数值或数组 {t, tMin和 tMax 是 数值, value1和value2 是数或数组} 当 t <= tmin时返回value1;当t >= tMax时,返回value2 当tMin < t < tMax 时, 返回 value1和value2 的线性差值 以下表达式取值方法与上面类似 而下面说的 开始或结束以及切点速度为0 使动画平滑 可以理解为 给位移或缩放打关键帧 让关键帧缓入缓出 以下表达式用于位置 比例 则有这样效果 ease(t, value1, value2) {t 是一个数, value1 和 value2 是数或数组} 返回值与linear相似, 但在开始和结束点的速率都为0。这种方法的结果是动画非常平滑。 ease(t, tMin, tMax, value1, value2) {t, tMin, 和 tMax 是数, value1 和 value2 是数或数组} 返回 值与 linear相似, 但在开始和结束点的速率都为0。这种方法的结果是动画非常平滑。 easeIn(t, value1, value2) {t 是一个数, and value1 and value2 是数或数组} 返回 值与ease相似, 但只在切入点value1 的速率为0,靠近value2 一边是线性的。 easeIn(t, tMin, tMax, value1, value2) {t, tMin和tMax 是一个数, value1和value2 是数或数组}返回 值与ease相似, 但只在切入点tMin 的速率为0,靠近tMax 一边是线性的。 easeOut(t, value1, value2) {t 是一个数, value1和value2 是数或数组}.返回 值与ease相似, 但只在切入点value2 的速率为0,靠近value1 一边是线性的。 easeOut(t, tMin, tMax, value1, value2) {t, tMin和tMax 是数, value1 value2 是数或数组} 返回 值与ease相似, 但只在切入点tMax的速率为0,靠近tMin 一边是线性的 ========================================== 彩转换方法 ========================================== rgbToHsl(rgbaArray) 返回类型:数组 个维度 rgbaArray 是数组 4维度将 RGBA 空间中的颜转换为 HSLA 空间 输入是标准化的红、绿、蓝和 Alpha 通道值数组,全部介于 0.0 到 1.0 范围内。 生成的值是相[0]、饱和度[1]、亮度[2] 以及 Alpha 通道值[3] 数组,同样介于 0.0 到 1.0 范围内 H (相) S( 饱和度) B(亮度) R( 红) G(绿) B( 蓝 ) S 与 B 决定亮度值 如图 当 H为 180 的时候 rgbToHsl(effect("Color Control")("Color"))[0] 返回 相值 0.5 当 S 为 100 的时候 rgbToHsl(effect("Color Control")("Color"))[1] 返回 饱和度值 1 当 B 为 100 S 为 100的时候 rgbToHsl(effect("Color Control")("Color"))[2] 返回 亮度值 0.5 B为100 S 为0的时候返回亮度值1 hslToRgb(hslaArray) 返回类型:数组 4维度 hslaArray 是数组 4维度. 转换 HSLA彩空间到RGBA 彩空间 上式的逆运算 ====================================== 其它数学方法 以下两个返回的类型都是数值 ===================================== ============================================ javascript 数学 (最后的 if语句 有 sin 的例子) 以下表达式返回的类型都是 数值 ============================================ =========================================== Comp属性和方法 =========================================== layer(index) 返回类型:图层、光照或摄像机 index是数值 按照编号(“时间轴”面板中的顺序)检索图层 例如, thisComp.layer(1) layer("name") 返回类型:图层、光照或摄像机 name是一个字串 得到层名。 指定的名字与层名匹配,或者在没有层名时与源名匹配。 如果存在重名,After Effects 使用时间线窗口中的第一个. 例如, thisComp.layer("AA"). layer(otherLayer, relIndex) 返回类型:图层、光照或摄像机 {otherLayer 是 层对象, relIndex 是数值} 得到otherLayer (层名)上面或下面relIndex (数) 的一个层。 例如, layer(thisLayer, -1) 返回 在时间线窗口中比 写这个表达式的层 高 2 层的层。 marker.key(2)ment marker 后面跟着的 key 就是下图的标记点 亦可理解为 “关键帧“ “关键点“ 而括号里的数值 是 标记的顺序 从 左到右 comment 则是标记点设置里的属性值 既 comment 可以改为time duration 等等 numLayers 返回类型:数值 返回 当前合成中 层的数量 activeCamera 返回类型:摄像机 返回通过其在当前帧渲染合成的摄像机的摄像机对象 width 返回类型:数值 返回合成的宽度 height 返回类型: 数值 返回合成的高度 duration 返回类型:数值 返回合成的持续时间值,单位为秒。 displayStartTime 返回类型:数值 返回合成开始 时间 ntscDropFrame 返回类型:布尔值 如果时间码是丢帧格式,则返回 true当合成 帧数 设置 为 Drop Frame 返回值 是 1 为NON-Drop Frame 返回值是0 frameDuration 返回类型:数值 返回 当前合成的 每秒 一帧 的持续时间值如图 shutterAngle 返回类型:数值 返回合成中快门角度的度数 shutterPhase 返回类型:数值 返回合成中快门相位的度数 如图 shutterAngle 和 shutterPhase是合成设置里的属性 bgColor 返回类型:数组 4维度 返回合成背景的颜。 pixelAspect 返回类型:数值 返回合成中用width/heigh表示的像素(pixel )宽高比 name 返回类型:字符串 返回合成的名字 ======================================= Footage 属性和方法 (以下返回值与Comp 相同 对象不一样) ======================================= footage("6") footage 指的是项目里的素材文件 除合成以外 width heightduration ntscDropFrame frameDuration pixelAspect name =========================== Layer =========================== ------------------------------------------ 层子对象属性和方法 ------------------------------------------ source 返回类型:合成或素材 返回 layer 的设置里的属性 如图 sourceTime(t = time) 返回类型:数值 返回 时间线在合成的时间值 减图层的开始位置在合成所处位置的时间值 延伸 当括号里面 没东西时候 同上 当 括号 里面 为数值的时候 返回 数值 减 图层的开始位置在合成所处位置的时间值 effect(name) 返回类型: 效果 After Effects 在效果控制窗口中用这个名字查对应的效果。 这个名字可以是默认名,也可以是用户自定义名。 如果这里有一些相同的效果名则选择效果控制窗口中同名字的最上面的一个效果。 effect(index) 返回类型 :效果 After Effects 在效果控制窗口中用这个序号查对应的效果。 起始于1 且从顶部开始。 mask(name) 返回类型 :遮罩 这个名字可以是默认名,也可以是用户自定义名 mask(index) 返回类型 :遮罩 After Effects 在时间线窗口中用这个序号查对应的遮罩。 起始于1 且从顶部开始。 ----------------------------------- 层的一般属性和方法 ----------------------------------- width 返回类型:数值 返回图层的宽度 height 返回类型:数值 返回图层的高度 index 返回类型:数值 返回图层的序值 parent 返回类型:图层、光照或摄像机 返回层的父层对象, 例如, parent.ration hasParent 返回类型:布尔值 如果有父层返回 true ,如果没有父层返回 false inPoint 返回类型: 数值 返回层的入点,单位为秒. outPoint 返回类型: 数值 返回层的出点,单位为秒. startTime 返回类型: 数值 返回层的开始时间,单位为秒 hasVideo 返回类型:布尔值 如果有视频(video)返回 true ,如果没有(video)返回 false. hasAudio 返回类型:布尔值 如果有音频(audio)返回 true ,如果没有音频(audio)返回 false. enabled 返回类型:布尔值 如果“视频”开关 在图层中打开,则返回 true;否则,返回 false active 返回类型:布尔值 如果“视频”开关 在图层中打开且当前时间处于 图层的入点到图层的出点范围内,则返回 true;否则,返回 false audioActive 返回类型:布尔值 如果“音频”开关 在图层中打开且当前时间处于 图层的入点到图层的出点范围内,则返回 true;否则,返回 false sampleImage(point, radius = [.5, .5], postEffect = true, t = time) 返回类型:数组 4维度 (AK大神的教程 123 期中有案例) 对图层的颜和 alpha 通道值进行采样,并返回指定点距离内像素的平均 alpha 加权值:[red,green, blue, alpha] point 是数组 2维度,radius 是数组 2维度,postEffect 是布尔值,t 是数值 输入值 point 位于当前合成 空间中;点 [0,0] 是当前合成 左上角顶点 为 像素的中心 ,以 原点向外扩散像素面积(长宽积) 所以 无论怎么改变 图层的位置、缩放、旋转 等等的 属性对 表达式 无影响 输入值 radius 指定样本中心到采样矩形的边缘的水平和垂直距离。默认值会对一个像素采样 如果 postEffect 为 true,则采样值是渲染图层上的蒙版和效果后的图层的值 如果 postEffect 为 false,则采样值是渲染蒙版和效果前的图层的值 ------------------------- Layer 特征属性和方法 -------------------------- 以下6个为layer的属性值 anchorPoint 返回层空间内层的锚点值. position 返回位置值 . scale 返回层的缩放值,表示为百分数. rotation 返回层的旋转度数, 对于3D 层, 它 返回 z旋转度数. opacity 返回层的透明值,表示为百分数. audioLevels 返回层的音量属性值,单位为分贝.这是一个2维值; 第一个值表示左声道的音量,第二个值表示右声道的音量. timeRemap 当时间重置被激活时, 返回时间线在图层的时间值 marker.key(index) marker.key("name") name 返回类型:字符串 返回指定 图层对象的名字 ------------------- 3D属性和方法 ------------------- 以下 为3D图层属性值 orientation 对3D层 ,返回3D 方向的度数。 rotationX 对3D层,返回 x旋转值的度数。 rotationY 对3D层,返回 Y 旋转值的度数。 rotationZ 对3D层,返回 Z 旋转值的度数。 castsShadows 为on的时候 返回数值1 only 的时候返回数值2 off的时候返回数值3 lightTransmission 对3D层,返回光的传导属性值。 acceptsShadows 为on的时候 返回数值1 only 的时候返回数值2 off的时候返回数值3 acceptsLights 为on的时候 返回数值1 only 的时候返回数值2 off的时候返回数值3 ambient 返回环境因素的百分数值。 diffuse 返回慢射因素的百分数值。 specular 返回镜面因素的百分数值。 shininess 返回发光因素的百分数值。 metal 返回才质因素的百分数值。 ------------------------------------------------------------- 层空间转换方法 (脑子不好使想不出有啥卵用..........) T=time 可以省略 ------------------------------------------------------------- 以下表达式返回类型:数组 2 ore 3维度 toComp(point, t = time) point 是 2or 3 维度数 的 数组 将点从图层空间变换到合成空间 fromComp(point, t=time) 将点从合成空间变换到图层空间。3D 图层中生成的点可能有非零值 即使它位于图层空间中。 toWorld(point, t=time) 将点从图层空间变换到与视角无关的世界空间 fromWorld(point, t=time) 将点从世界空间变换到图层空间 toCompVec(vec, t=time) 从层空间转换一个向量到合成空间 fromCompVec(vec, t=time) 从合成空间转换一个向量到层空间 toWorldVec(vec, t=time) 从层空间转换一个向量到世界空间 fromWorldVec(vec, t=time) 从世界空间转换一个向量到层空间 fromCompToSurface(point, t=time) 返回类型:数组 2维度 在从活动摄像机中进行查看时出现的位置将位于合成空间中的点投影到图层表面上的点(Z值为0) 此方法有助于设置效果控制点。仅用于 3D 图层 ======================= 摄象机属性和方法 ======================== pointOfInterest 返回类型:属性 3维度 返回摄像机在世界空间中的目标点值 zoom 返回类型:属性 返回摄象机的缩放值,单位为像素。 depthOfField 返回类型:属性 如果摄象机景深打开返回 1,否则返回0。 focusDistance 返回类型:属性 返回摄象机焦距值,单位为像素。 aperture 返回类型 :属性 返回摄象机光圈值,单位为像素。 blurLevel 返回类型: 属性 返回摄象机的模糊水平的百分数。 active 返回类型 布尔值 如果摄像机是当前时间合成的活动摄像机 ,则返回 true 摄像机图层的 显示开启 否则,返回 false ======================== 灯光属性和方法 ======================== pointOfInterest 返回类型:属性 3维度 在工作区 返回灯光目标点 以下 返回类型:属性 intensity 返回灯光亮度的百分数。 color 返回灯光彩值。(4维度) coneAngle 返回灯光光锥角度的度数。 coneFeather 返回灯光光锥的羽化百分数。 shadowDarkness 返回灯光阴影暗值的百分数 shadowDiffusion 返回灯光阴影扩散的像素 ================ 效果的属性和方法 ================ active 返回类型:布尔值 如果效果打开(“效果”开关 处于选定状态),则返回 true param(name) 返回类型:数值 param(index) 返回类型:数值 name 返回类型:字符串 如图 effect("1").param(1) 可以简写为 effect("1")(1) ============= 遮罩属性和方法 ============== MaskOpacity 返回类型:数值 返回遮罩透明值的百分数。 MaskFeather 返回类型:数值 返回遮罩羽化的像素值。 invert 返回类型:布尔值 如果遮罩是反转的,返回 true ;否则返回 false。 MaskExpansion 返回类型:数值 返回 遮罩的像素。 name 返回类型:字符串 返回遮罩名。 ================ 特征属性和方法 ================ value 返回类型:数值、数组或字符串 返回属性在当前时间的值 valueAtTime(t) 返回类型:数值or数组 t 是数值 返回 指定对象在指定时间的属性值 velocity 返回类型:数值or数组 返回关键帧之间的 速率值 这个值是矢量 即可以代表方向又可以代表数值 speed 返回类型::数值 返回 关键帧 之间的 速度值 这个值是常量 如下图 velocityAtTime(t) t 是数值 返回关键帧之间指定时间的速率值 这个值是矢量 speedAtTime(t) t 是数值 返回关键帧之间指定时间的速率值 这个值是常量 wiggle(freq, amp, octaves=1, ampMult=.5, t=time) 返回类型:数值或数组 可简写为 wiggle(振幅,频率) freq、amp、octaves、amp_mult 和 t 是数值。 随机摇动(摆动)属性值。 freq 值是每秒摆动的频率。 amp 值是向其应用了此值的属性单位中的振幅。 octaves 此值控制摆动的详细程度。使此值高于默认值 1 可在摆动中包括更高的频率 使此值低于默认值 1 可在摆动中包括振幅谐波。 amp_mult 此值控制谐波减弱的速度。默认为 0.5;使其更接近 1 可以与基本频率相同的振幅添加谐波 使其更接近 0 可以添加更少的细节 t 是基础启动时间。此值默认为当前时间。 当t为常量时候 则可以指定 返回 表达式在某一时间返回的值 如图 当 octaves和amp_mult为默认值的时候 表达式返回值0.7 当octaves为2 时候 返回值1.5 是因为频率改变了 当 amp_mult 为0.1时候 返回值 为 0.8 谐波细节少了 由此推断 wiggle 返回的值 是一个畸变波形图 使用wiggle的时候 使用简写 wiggle(振幅,频率) 即可 temporalWiggle(freq, amp, octaves=1, ampMult=.5, t=time) 数值关系和上面一样结果是 在摆动的时间对属性进行采样 就是随机采样 smooth(width=.2, samples=5, t=time) 返回类型:数值or数组 前面两个数值可取范围: 0<wdidth ≤ 1000 1≤samples≤100 结果 让数值之间的变化 起始和结束 有个起伏状态 比如 做了一个位移动画 关键帧两点间 速度值是不变的即匀速运动 ,当用了这个表达式后 则会 在关键点 前后若干帧 从 速度为0 加速至 平均速度值 再从平均速度值减速至 0 前后若干帧 取决于width的值 简称 w,smples 简称 s 则决定期间的变化频率 ) 说白了就是数值变化看起来更平滑 。一般情况下 w 取值 0.1到 1 之间就可以了 当你合成为25帧每秒的时候 w为1 数值的起伏时间大概为 26帧 也就是1秒左右 超过这时间动画看起来感觉就生硬许多。 (QQ截不出动态图,我就没上图了) 以下 返回类型:数值or数组 loopIn(type = "cycle", numKeyframe = 0) 从初始关键帧 之前开始循环 当 numKeyframe 为0的时候 循环值 从起始值 到 结束值 的变化 为1时 循环值 从起始值到第二关键帧的值 的变化 为2时 从起始值到第三关键帧的值 的变化 以此类推 超出关键帧数目时 则和为0时候 一样。 loopInDuration(type = "cycle", duration = 0) duration 为时间值 循环顺序同上 , 当duration值为0的时候 停顿 起始关键帧的当前时间值 为间隔时间循环 当duration值 超出 始末关键帧之间的时间值时候 停顿超出的时间为间隔循环 loopOut(type = "cycle", num关键帧 = 0) 从结束关键帧 之后 开始循环 当numKeyframe为0的时候 循环值 从起始值到结束值 的变化 为1时 循环值 从倒2关键帧值到结束值 的变化 为2时 从倒3关键帧值到结束值 的变化以此类推 超出关键帧数目时 则和为0时候一样 loopOutDuration(type = "cycle", duration = 0) 同上 ........................................................................................................................................ type = "cycle" 引号里面的决定循环方式 有四种 cycle pingpong continue offset cycle 重复循环 数字表示就是 1 2 3 4 1 2 3 4 pingpong 来回循环 数字表示就是 1 2 3 4 3 2 1 continue 类似掷铁饼 数字表示就是 3 2 1 2 3 4 5 此类型不接受 keyframes 或duration 参数 offset 按照固有的速度一直运动下去 好比匀速运动的车 数字表示就是 1 2 3 4 5 6 7 8 9 ............. ..................................................................................................................................... key(index) 括号里的数值 是 标记的顺序 从左到右 ,若key可以设置属性值 则后面要跟上指定属性对象 就好比 之前的 marker.key(2)ment ,不是则如下图 key(markerName) 用这个名字 返回标记的 key 对象。仅用于标记属性 nearestKey(time) 返回指定时间最近的关键帧对象 numKeys 返回 在一个属性中 关键帧 的数目。 name active enabled propertyGroup(countUp = 1) 返回与对其编写表达式的属性相关的属性组 例如: propertyGroup(1) 指当前属性所在的属性组 propertyGroup(2) 指定当前属性的父级的所在的属性组 依次类推 如图 propertyIndex 返回制定属性 在同一级属性所处第几位的数值 如下图 ============================ key的方法特征 ============================ value 返回指定关键帧的当前 属性值 time 返回指定key在当前合成的时间值 index 返回指定 key 的顺序值 ================ Markerkey 的属性 ================= comment 返回类型:字符串 chapter 返回类型:字符串 url 返回类型:字符串 frameTarget 返回类型:字符串 eventCuePoint 返回类型:布尔值 标记对话框中的提示点类型设置 对于Event 为 True;对于Navigation 为 False cuePointName 返回类型:字符串 标记对话框中的提示点名称内容字段 parameters 返回类型:字符串关联 duration 返回类型数值 ========= java运算符 ============= 1.赋值运算符 赋值 运算以符号 “=”表示 比如: 赋予一个变量 a=1 2,java算术运算符 3.自增和自减运算符 ++ 和 -- 4.比较运算符 (结果返回 true 或 flase) 5.逻辑运算符 返回类型为布尔值的表达式 元素必须是布尔值类型数据 如 :比较运算符 可以被组合起来 从3.8图可以看出 两个表达式都为true的时“逻辑与”才会是true &&和&去区别在于 &会对两个进行判断 && 若第一个是错误的就不会去判断第二个这样可以减少占用电脑内存 6. 位运算符(个人觉得AE表达式里基本用不上) 另外 如 y<<2 与y*4 结果相同 y>>1 与 y/2结果相同 总之 一个数左移n位 就是将这个数乘以 2 的n次方 一个数右移n位就是将这个数除以2的n次方 7.三元运算符 条件试?值1:值2 若条件试的值为true ,则取 值1,否则取 值2 8.运算符优先级 如果两个运算有相同的优先级那么左边的表达式要比右边的表达式先被处理 补充个 ~ 在 ! 前面 Java语句 (记住if语句就够用了 ,其他的了解下即可个人觉得。) ================== if条件语句 ================== 1.简单的fi条件语句 if(布尔表达式){语句序列} 如图 当 布尔表达式返回 true 时候 执行后面的语句 false 则不执行 例子:用表达式 让图层旋转 随着度数改变透明度发生变化 即 转一圈透明度0-100 第二圈100-0 time是以秒为单位 在旋转上的表达式 time*360/2 表示两秒转一圈 在AE表达式中 不认度数也不支持计量单位符号 所以要将 度数转换为弧度 即 有了以下下表达式 Math.sin(rotation*Math.PI/180) 注:rotation 是旋转数值 Math.PI 是π 1°=π/180 弧度 90°=π/2 弧度 sin(90°)=sin(2π)=1 sin 值 [-1,1] 所以 要想让 物体转一圈 透明度为100则 Math.sin(rotation*Math.PI/180/4) =Math.sin(360*Math.PI/180/4)=1 加上条件语句即为100 上式 括号内 结尾除4 是为了 让最终值为1 也就是 360/4=90 Math.sin(90*Mathe.PI/180)=1 注明; 误区 Math,sin(90) 括号内的90表示 弧度值 不是90° 固 Math.sin(90)≠1 2,if....else 语句 if(表达式){若干语句} else{若干语句} 如图 if 表达式若成立 就执行后面的语句 不成立 则执行 else 后面的语句 3. if...........else if 多分支语句 if(条件表达式1){语句序列1} else if (条件表达式2){语句序列2} else if(条件表达式3) {语句序列3}..................else if(表达式n){语句序列n} 如图 判断 if 表达式1 是否成立 成立就执行后面语句 不成立 接着 判断 fi 表达式2 成立 就执行后面的语句 以此类推 =================== switch 多分支语句 =================== switch(表达式) {case 常量1 : 语句块1;break;case 常量2 : 语句块2;break; ................ case 常量n : 语句块n;break;default;语句块;breack;} (case 后面跟着的数要空一格) 当表达式 返回的值 等于常量1时 执行 语句块1 等于常量2 执行 语句块2 以此类推 都不等于的情况下 执行default 后面的语句块如下图 意思是 当slider的数值为10的时候 输出位置信息 [1000,1000] 当数值为20的时候输出 [1,1] 不符合以上条件的情况下 输出 与滑块相同的值 (因为两个输出的值都绑定了Slider) 注: switch 中的 表达式 和 case 后面的 值必须是 整数、字符、字符串 所以有了 图一 的 n=0+绑定滑块 switch(n) 若直接n=绑定滑块 则 是无效的 ,即想绑定某些数值 在绑定的表达式上做运算即可 如图 ==================== 循环语句 ==================== 1.while 循环语句 while(条件表达式) {执行语句} 当条件表达式返回值为 真 时 执行括号中的语句,再重新判断,直到返回结果为假的时候退出循环 如下图 意思 就是如果 n小于等于0 就输出n值 若大于0 就执行后面的运算 直至n小于等于0输出n值 while 循环语句 do{执行语句} while(条件语句) 先执行do 后面的语句 后判断条件语句是否成立 成立 则继续执行语句直至不成立输出 值 如下图 n=310 执行 n=310-200=110 判断 是否 n>100 成立 则继续执行语句 n=110-200=-90 再判断 是否 n>100 不成立则推出循环 ============= for循环语句 ============= 1.for(表达式1;表达式2:表达式3){语句序列} 表达式1 :定义变量 表达式2:为布尔表达式 返回 真 or 假 表达式 3 :用来改变变量 这个循环语句 先执行表达式1 再判断表达式2 若为true 则进入循环 执行语句序列 再执行表达式3 再执行表达式2 判断是否 为true 若为false 退出循环 输出值 若为true 则继续循环 直至 false 执行语句序列 输出 最后 值 如图 先 定义变量 n=1 然后执行表达式1 判断 是否 n>0 成立 则执行 语句序列 n=1-1 =0 再执行表达式3 n=0-2=-2 再执行表达式1 判断是否n>0 不成立 则输出n值 2. for(表达式1;表达式2;){表达式3,if(布尔表达式);break;x++} x++ 和 x=x+1 相同 x为变量 执行表达式1 定义变量 再执行表达式2 再执行表达式3 接着 执行 if(布尔表达式) 成立 则输出 值 不成立则 则执行 x++ 再进入循环 如图 先定义变量 n=1 再执行表达式2 n=1+1=2 再执行表达式3 n=2+4=6 执行 if 判断是否n>8 不成立 则 执行n++ 即 n=6+1 =7 再执行表达式2 n=7+1=8 再执行表达式3 n=8+4=12 判断if 成立 所以输出值为12 ============================= atch 语句 ===================== atch 可以测试代码中的错误。try 部分包含需要运行的代码,而 catch 部分包含错误发生时运行的代码 try{}catch(err){} 如图 |
∙
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论