摘要:Layer - General(图层常规属性和方法)组允许访问图层的尺寸、索引、父级关系、时间点、内容类型、开关状态以及对像素(区域)进行采样等。这些功能可用于动态调整动画、控制效果和实现图层间互动,显著提升 After Effects 项目的灵活性和创作效率
Layer - General(图层常规属性和方法)组允许访问图层的尺寸、索引、父级关系、时间点、内容类型、开关状态以及对像素(区域)进行采样等。这些功能可用于动态调整动画、控制效果和实现图层间互动,显著提升 After Effects 项目的灵活性和创作效率。
width
获取图层的宽度。
参数 :无
返回值 :返回图层的宽度(Number),以像素为单位。此值与 source.width 相同。
应用:
//示例 :动态调整图层的缩放以匹配另一个图层的宽度// 获取 Layer A 的宽度var targetWidth = thisComp.layer("mediaTEA").width;// 获取 Layer B 的原始宽度var originalWidth = thisLayer.source.width;// 计算缩放比例var scaleX = (targetWidth / originalWidth) * 100;// 应用到缩放属性,保持 Y 轴缩放不变[scaleX, value[1]];height
获取图层的高度。
参数 :无
返回值 :返回图层的高度(Number),以像素为单位。此值与 source.height 相同。
应用:
//示例:根据图层高度动态调整位置// 获取图层的高度var layerHeight = height;// 动态调整 Y 位置[value[0], value[1] + Math.sin(time) * layerHeight];index
获取图层在合成中的索引编号。
参数 :无
返回值 :图层的索引编号(Number)。索引编号从 1 开始,按图层在时间轴中的排列顺序计算。
应用:
//示例:根据图层索引动态调整颜色// 获取图层的索引var layerIndex = index;// 根据索引编号生成颜色值[layerIndex / thisComp.numLayers, // Red1 - (layerIndex / thisComp.numLayers), // Green0.5, // Blue1 // Alpha]parent
获取图层的父图层对象(如果有)。
参数 :无
返回值 :图层的父级对象(Object)。如果图层没有父级,则报错。父级对象可以是另一个图层、灯光或摄像机。
应用:
//示例 1:根据父级图层的位置动态调整当前图层的位置if (hasParent) {// 获取父级图层的位置var parentPos = parent.transform.position;// 动态调整当前图层的位置,例如向右偏移父级图层宽度的一半[parentPos[0] + parent.width / 2, parentPos[1]];} else {// 如果没有父级,保持原始位置value;}//示例 2:形状图层的位置表达式。让形状的位置在其父图层的效果的产生点。parent.effect("无线电波")("产生点");hasParent
判断图层是否有父级图层。
参数 :无
返回值 :Boolean。如果图层有父级,则返回 true;如果没有,则返回 false。
应用:
//示例:以下表达式指示子级图层基于父级的位置摆动。如果图层没有父级,则会基于它自己的位置摆动。如果稍后向图层分配父级,则图层的行为会相应地更改。idx = index;if (hasParent) {idx = parent.index;}thisComp.layer(idx).position.wiggle(5,20)inPoint
获取图层的入点时间。
参数 :无
返回值 :返回图层的入点时间(Number),以秒为单位。
应用:
入点是图层在合成中开始显示的时间。
//示例 :根据图层的入点时间调整动画的开始时间// 定义动画持续时间var animDuration = 2; // 秒// 计算动画进度var progress = linear(time, inPoint, inPoint + animDuration, 0, 100);// 保持不透明度在0到100之间clamp(progress, 0, 100);outPoint
获取图层的出点时间。
参数 :无
返回值 :返回图层的出点时间(Number),以秒为单位。
应用:
出点是图层在合成中停止显示的时间。
//获得图层的持续时间var a,b,c;a=thisComp.layer("形状图层 1").inPoint;b=thisComp.layer("形状图层 1").outPoint;c=b-a;startTime
获取图层的起始时间 。
参数 :无
返回值 :返回图层的起始时间(Number),以秒为单位。
应用:
起始时间是图层在合成中相对于整个合成的开始时间。若图层没调整过入点,则起始时间与入点时间一致。
//示例 :根据图层的起始时间创建延迟动画// 定义动画延迟时间var delay = 1; // 秒// 如果当前时间大于起始时间加延迟,执行动画if (time > startTime + delay) {// 动态缩放,例如逐渐放大到150%var progress = linear(time, startTime + delay, startTime + delay + 2, 100, 150);[progress, progress];} else {// 保持原始缩放value;}hasVideo
判断图层是否包含视频内容。
参数 :无
返回值 :Boolean。如果图层包含视频内容,则返回 true;如果没有,则返回 false。
应用:
//示例:动态添加视频特效if (hasVideo) {// 添加模糊效果,模糊量随时间增加value + time * 10;}else {// 不添加模糊,保持原始值value;}hasAudio
判断图层是否包含 音频 内容。
参数 :无
返回值 :Boolean。如果图层包含音频内容,则返回 true;如果没有,则返回 false。
应用:
//示例 :根据图层是否有音频调整图层的不透明度if (hasAudio) {100; // 显示图层} else {0; // 隐藏图层}enabled
判断图层的“视频开关”是否开启。
参数 :无
返回值:Boolean。如果“视频开关”开启,则返回 true;否则,返回 false。
应用:
//示例 1:条件性地应用颜色校正效果if (enabled) {[1, 0, 0, 1]; // 映射为红色} else {[0, 0, 0, 1]; // 保持原色}//示例 2:根据视频开关状态控制图层透明度if (enabled) {100; // 全不透明} else {50; // 半透明}判断图层的“视频开关”是否开启,且当前时间处于图层的入点到图层的出点范围内。
参数 :无
返回值:Boolean。如果“视频开关”开启且当前时间处于图层的入点到图层的出点范围内,则返回 true;否则,返回 false。
应用:
示例 1:仅在图层活动时应用效果,比如高斯模糊if (active) {50; // 应用模糊} else {0; // 无模糊}//示例 2:根据图层活动状态触发动画if (active) {// 图层活动时,执行动画(例如,位置随时间波动)[value[0], value[1] + Math.sin(time) * 50];} else {// 图层不活动时,保持原位value;}audioActive
判断图层的“音频开关”是否开启,且当前时间处于图层的入点到图层的出点范围内。
参数 :无
返回值:Boolean。如果“音频开关”开启且当前时间处于图层的入点到图层的出点范围内,则返回 true;否则,返回 false。
应用:
//示例 :根据音频活动状态调整图层的位置if (audioActive) {// 音频活动,保持原始位置value;} else {// 音频不活动,移动图层到画面外[value[0] - 500, value[1]];}sampleImage(point, radius=[.5,.5], postEffect=true, t=time)
从图层的指定位置(或区域)采样颜色和透明度值。
参数 :
point :采样点的位置(Array),格式为 [x, y],单位为像素。坐标系基于图层空间,[0,0] 位于图层左上角。
radius :可选,指定采样区域的半径(Array),格式为 [x半径, y半径],单位为像素。默认值是对一个像素采样,即[.5, .5]。
postEffect : Boolean,可选。默认为 true,采样在应用蒙版和效果之后;如果为 false,采样在应用蒙版和效果之前。
t :指定采样的时间点(Number),单位为秒,默认为 time。
返回值 :包含 [red, green, blue, alpha] 四个元素的数组(Array),表示采样区域的平均颜色和透明度值。
应用:
//示例 1:根据图层某点的颜色动态调整另一个图层的颜色// 定义采样点,相对于第5个图层的位置var samplePoint = [100, 100]; // 100像素右,100像素下// 获取 Layer A 的颜色var sampledColor = thisComp.layer(5).sampleImage(samplePoint, [1,1], true, time);// 返回采样的颜色[sampledColor[0],sampledColor[1],sampledColor[2],1];//示例 2:根据图层某区域的颜色动态调整图层的不透明度// 定义采样点和半径var samplePt = [thisLayer.width / 2, thisLayer.height / 2]; // 图层中心var sampleRadius = [50, 50]; // 50像素半径// 采样颜色var colorSample = sampleImage(samplePt, sampleRadius, true, time);// 计算平均亮度var avgBrightness = (colorSample[0] + colorSample[1] + colorSample[2]) / 3;// 将亮度映射到不透明度范围linear(avgBrightness, 0, 1, 0, 100);“点赞有美意,赞赏是鼓励”
来源:恬恬课堂