AEJoy —— 27 个表达式实例(一)【JS】

1,184 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

2D 转 3D(2D to 3D Null)

附加一个 2D 位置到 3D 空对象上

thisComp.layer("3D Layer Name").toComp([0,0,0]);

根据标记持续时间自动淡入和淡出(Auto Fade In & Out by Marker Duration)

淡入淡出使用标记来设置持续时间

fadeFrames = 6; m = 0; t = time;
if (marker.numKeys > 0) {
    m = marker.nearestKey(time).index;
    tag = marker.key(m).comment;
    if (tag == 'Highlight') {
        tMin = marker.key(m).time;
        tMax = tMin + marker.key(m).duration;

        if (t < tMin) {
            linear(time, tMin - framesToTime(fadeFrames), tMin, 0, value);
        } else {
            linear(time, tMax - framesToTime(fadeFrames), tMax, value, 0);
        }
    } else {
        value;
    }
} else { value }

在文本上垂直居中锚点(Center Anchor Point Vertically on Text)

使锚点始终在文本层垂直居中

y=value[1]-sourceRectAtTime(time).height/2;
[0,y]

用复选框控制属性(Control Property with Checkbox)

将这个表达式应用到你想要控制的属性(比如不透明度),并确保它引用了正确的控制层。

value * thisComp.layer("Controls").effect("Control Name")("Checkbox"); // replace Checkbox Control with your checkbox control

用空对象控制形状图层(Control Shape Layer Position with Null)

通过空对象控制形状层的位置 —— 像设置父级,但保持你的形状层的相对位置。

control=thisComp.layer("Control NULL"); // your controller null
controlPos = control.toComp(control.transform.anchorPoint);
fromComp(controlPos)
// apply to position property

延迟(Delay)

一定数量帧的延迟属性

delay = 5; //number of frames to delay
d = delay*thisComp.frameDuration*(index - 1);
thisComp.layer(1).rotation.valueAtTime(time - d)

使用滑动条延迟关键帧(Delay Keyframes With Slider)

使用滑块控件将关键帧动画延迟定义的秒数。像标记触发器一样工作,但更简单。

delay = thisComp.layer("Controls").effect("Delay")("Slider"); // pickwhip to your Delay Slider (in seconds)
valueAtTime(time-delay)

选择下拉菜单(Dropdown Menu Select)

通过下拉菜单选择来控制图层的不透明度。添加一个数字[1,2,3 等]到图层的开始,使其工作

select = thisComp.layer("CONTROLS").effect("Dropdown")("Menu"); // pick whip to your dropdown
(select == parseInt(thisLayer.name[0])) ? value : 0;

冻结随机数字(Frozen Random Number)

生成随机数

seedRandom(index,true);
myValue = random(50) ;

获取当前的日期和格式(Get Current Date and Format)

获取当前日期的有用代码片段

d = new Date(Date(0));
// Format Settings
divider = "/"
yearLength = 2; // use 2 for YY, 4 for YYYY