【问题标题】:ES Adding an in and out ease value to AE ScriptES 为 AE Script 添加一个 in 和 out 缓动值
【发布时间】:2022-11-09 21:53:10
【问题描述】:

这是我第一次提出问题,而不仅仅是随机搜索。提前原谅我,在 JS 和 ES 方面,我比绿色更环保。

我正在尝试对我在这里找到的代码进行逆向工程:For loop in Adobe ExtendScript

它工作得很好,但它只允许我在关键帧的内外插入一个关键帧缓动值。我希望能够将它们分开,这样我就可以使用ease1 和ease2 而不仅仅是ease1。任何帮助将不胜感激!

function storeKeyframes(){
    var comp = app.project.activeItem;
    if (!comp || comp.typeName !== "Composition") return;
    var properties = comp.selectedProperties;
    var i, I=properties.length;
    var ease1 = new KeyframeEase(0,30);
    var ease2 = new KeyframeEase(0,45);

    for (i=0; i<I; i++){
        if (properties[i] instanceof Property) setEase(properties[i], ease1);
        };
    };
function setEase(property, ease1){
    var ease = property.propertyValueType===PropertyValueType.Two_D ? [ease1, ease1] : (property.propertyValueType===PropertyValueType.Three_D ? [ease1, ease1, ease1] : [ease1]);
    var keySelection = property.selectedKeys;
    var i, I=keySelection.length;
    for (i=0; i<I; i++){
        property.setInterpolationTypeAtKey(keySelection[i], KeyframeInterpolationType.BEZIER, KeyframeInterpolationType.BEZIER);
        property.setTemporalEaseAtKey(keySelection[i], ease, ease);
        };
    };

【问题讨论】:

    标签: extendscript keyframe after-effects easing


    【解决方案1】:

    我相信这可能是你所追求的:

    function storeKeyframes(){
        var comp = app.project.activeItem;
        if (!comp || comp.typeName !== "Composition") return;
        var properties = comp.selectedProperties;
        var numProps = properties.length;
        var ease1 = new KeyframeEase(0,30);
        var ease2 = new KeyframeEase(0,45);
    
        for (var i = 0; i < numProps; i++){
            if (properties[i] instanceof Property) setEase(properties[i], ease1, ease2 );
        };
    };
    
    function newSetEase( prop, inEase, outEase ) {
        var keySelection = prop.selectedKeys;
        var numKeys = keySelection.length;
    
        for(var i = 0; i < numKeys; i++) {
            prop.setInterpolationTypeAtKey(keySelection[i], KeyframeInterpolationType.BEZIER, KeyframeInterpolationType.BEZIER);
    
            if (!prop.isSpatial && prop.value.length == 3) {
                prop.setTemporalEaseAtKey(keySelection[i],[inEase,inEase,inEase],[outEase,outEase,outEase]);
            }
            else if (!prop.isSpatial && prop.value.length == 2) {
                prop.setTemporalEaseAtKey(keySelection[i],[inEase,inEase],[outEase,outEase]);
            }
            else {
                prop.setTemporalEaseAtKey(keySelection[i],[inEase],[outEase]);
            }
        }
    }
    
    storeKeyframes()
    

    【讨论】:

      最近更新 更多