Adobe AE Extendscript按名称删除标记

Adobe AE Extendscript按名称删除标记,adobe,effects,extendscript,Adobe,Effects,Extendscript,我正在编写一个After-Effects脚本,其中包括一个图层上所有标记的可视化GUI列表。标记名称被多次使用,例如,图层上的所有标记都可以是“开始、开始、开始、结束”。从列表中选择标记名称时,我希望删除时间线中最近的此类标记(例如name=“start”) (为了更好地理解我的意思,这里有一张剪贴画) 单击减号按钮执行该函数 我已按名称成功获取标记,但似乎无法删除选定的标记。我的脚本如下: var removeMarker = function(layer, listbox) {

我正在编写一个After-Effects脚本,其中包括一个图层上所有标记的可视化GUI列表。标记名称被多次使用,例如,图层上的所有标记都可以是“开始、开始、开始、结束”。从列表中选择标记名称时,我希望删除时间线中最近的此类标记(例如name=“start”)

(为了更好地理解我的意思,这里有一张剪贴画) 单击减号按钮执行该函数

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

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)
        }

}
根据,nearestKeyIndex()应该返回一个整数,我可以使用它通过removeKey()删除标记。 nearestKeyIndex()返回并返回对象

有什么想法吗? 非常感谢!
Simon

后效标记属性不像其他属性那样提供大量信息

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

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;
        }
    }
}
函数移除标记(图层、列表框){
var markerName=listbox.selection.toString();
var marker=layer.property(“marker”);
var t=层时间;
for(var i=1;i=t&&marker.keyValue(i.comment==markerName){
标记器。移除键(i);
返回true;
}
}
}

您是否尝试过
最接近的键索引(t).value
?(只是猜测)嘿@stib,谢谢你花时间回答。遗憾的是,这没有起作用。实际上,字符串化nearestKeyIndex(t)的返回返回{“chapter”:“comment”:“start”,“cuePointName”:“duration”:0.4,“eventCuePoint”:true,“frameTarget”:“url”:“},所以我想知道我要找的信息是否存储在这个命令中……所以它看起来像是返回marker对象,而不是它的索引。你试过
markerClosest.index
吗?是的,我试过。遗憾的是,回报是不确定的。天哪,这太简单了!我与marker属性斗争了太久,忽略了最简单的解决方案。非常感谢你,齐奇!