AE Extendscript 按名称删除标记
AE Extendscript remove marker by name
我正在制作 After Effects 脚本,其中包含图层上所有标记的可视化 GUI 列表。标记名称被多次使用,例如图层上的所有标记可以是 "start, start, start, end"。当从列表中选择一个标记名称时,我想在我的时间轴中删除最近的此类标记(例如 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)
}
}
根据 AE Scripting Guide,nearestKeyIndex() 应该 return 一个整数,我可以使用它通过 removeKey() 删除标记。
nearestKeyIndex() returns 和 object though.
有什么想法吗?
非常感谢!
西蒙
After Effects 标记 属性 不像其他属性那样提供很多信息。
您需要遍历标记,对于每个标记,您需要检查时间是否晚于您的当前时间和标记名称(注释),然后通过它的索引删除此键:
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;
}
}
}
我正在制作 After Effects 脚本,其中包含图层上所有标记的可视化 GUI 列表。标记名称被多次使用,例如图层上的所有标记可以是 "start, start, start, end"。当从列表中选择一个标记名称时,我想在我的时间轴中删除最近的此类标记(例如 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)
}
}
根据 AE Scripting Guide,nearestKeyIndex() 应该 return 一个整数,我可以使用它通过 removeKey() 删除标记。 nearestKeyIndex() returns 和 object though.
有什么想法吗? 非常感谢! 西蒙
After Effects 标记 属性 不像其他属性那样提供很多信息。
您需要遍历标记,对于每个标记,您需要检查时间是否晚于您的当前时间和标记名称(注释),然后通过它的索引删除此键:
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;
}
}
}