AE表达式里的MarKey就是Marker,也就是标记。核心用法就三件事:合成标记写thisComp.marker,图层标记写thisLayer.marker;用numKeys数标记数量;用key(i).time、key(i).comment、nearestKey(time)读时间、注释和最近标记。拿到这些值后,丢给透明度、位置、缩放、时间重映射等属性,就能让动画在标记点触发。新手先记thisLayer.marker.key(1).time和thisLayer.marker.nearestKey(time),足够做卡点、倒计时、字幕切换。别把它想复杂,标记就是表达式的小开关。

图层标记挂在图层上,用thisLayer.marker;合成标记挂在合成时间轴上,用thisComp.marker。给音频层打几个标记,双击改comment,写“闪”“切”“go”都行。表达式想读第一个标记时间,就写thisLayer.marker.key(1).time,单位是秒。想知道当前时间最近哪个标记,写thisLayer.marker.nearestKey(time),点.time拿时间,点.comment拿注释。numKeys告诉你一共有几个标记。卡点视频常用这招:音乐层打标记,其他图层用nearestKey找节奏,透明度、缩放、颜色跟着跳。标记名字别乱打,表达式里写错一个字母就报错。

比如做标记闪白,给图层透明度写:m = thisLayer.marker.nearestKey(time); if (m && time >= m.time && time 小于 m.time + 0.2) { 100 } else { 0 }。意思是当前时间到达最近标记后的0.2秒内,透明度冲到100,其他时间归0。想让每个标记都触发,就别用nearestKey死磕,直接循环找“已经过去的最后一个标记”:n = 0; for (i = 1; i 小于等于 thisLayer.marker.numKeys; i++) { if (thisLayer.marker.key(i).time 小于等于 time) n = i; } 拿n去取key(n).time。这样过了标记不会乱跳,卡点更稳,做鬼畜、混剪、快闪都够用。

标记的comment能当指令用。比如在合成标记写“go”,表达式写m = thisComp.marker.nearestKey(time); if (m && m.comment == "go" && time >= m.time) 100 else 0。这样标记一到就触发,适合做开场、转场、字幕弹出。还想更细,可以读m.duration,把触发窗口设为m.time到m.time加m.duration。时间重映射也常用:把视频层标记当关键点,用marker.key(i).time驱动播放速度或冻结帧。注意合成标记和图层标记别混,预合成里外时间也可能差一层。表达式报错先检查marker拼写,看有没有标记,看属性名是不是time、comment、duration。





























