首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AE扩展脚本按名称删除标记

AE扩展脚本按名称删除标记
EN

Stack Overflow用户
提问于 2017-10-05 06:53:48
回答 1查看 1.4K关注 0票数 1

我正在开发一个后效果脚本,它包括一个图层上所有标记的可视化GUI列表。标记名被多次使用,例如,图层上的所有标记都可以是“开始,结束”。当从列表中选择标记名时,我希望删除时间线中最近的标记(例如,name="start")。

(想要更好地理解我的意思,这里有个尖叫)

单击减号按钮执行函数。

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

代码语言:javascript
复制
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脚本指南,nearestKeyIndex()应该返回一个整数,我可以使用这个整数通过removeKey()删除标记。但是,nearestKeyIndex()返回和对象。

有什么想法吗?提前谢谢你!西蒙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-24 05:06:54

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

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

代码语言:javascript
复制
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;
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46579572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档