AE Extendscript按名称删除标记

时间:2017-10-05 06:53:48

标签: adobe effects extendscript

我正在制作After Effects脚本,其中包含图层上所有标记的可视GUI列表。标记名称被多次使用,例如图层上的所有标记都可以是“开始,开始,开始,结束”。从列表中选择标记名称时,我想在时间轴中删除最近的此类标记(例如name =“start”)。

(为了更好地了解我的意思,这是一个screeshot)enter image description here 单击减号按钮将执行该功能。

我按名称成功获得了标记,但似乎无法删除所选标记。我的脚本如下:

var removeMarker = function(layer, listbox) {

        var selected = listbox.selection, // returns the selected marker name
            t = layer.time;

    var marker = layer.property("Marker"),
        markerClosest = marker.keyValue(marker.nearestKeyIndex(t));


        if(selected != null && selected.toString()==markerClosest.comment) { // if name provided by selection equals selected
            marker.removeKey(markerClosest)
        }

}

根据AE Scripting Guide,nearestKeyIndex()应该返回一个整数,我可以通过removeKey()来删除Marker。 nearestKeyIndex()返回和对象。

有什么想法吗? 非常感谢提前! 西蒙

1 个答案:

答案 0 :(得分:2)

After Effects Markers属性不像其他属性那样提供大量信息。

您需要迭代标记,并且对于每个标记,您需要检查时间是否在当前时间之后,以及标记名称(注释),然后通过它的索引删除此键:

function removeMarker(layer, listbox) {
    var markerName = listbox.selection.toString();
    var marker = layer.property('Marker');
    var t = layer.time;
    for (var i = 1; i <= marker.numKeys; i++) {
        if (marker.keyTime(i) >= t && marker.keyValue(i).comment === markerName) {
            marker.removeKey(i);
            return true;
        }
    }
}