【发布时间】:2019-05-05 22:52:12
【问题描述】:
我正在编写一个脚本,它可以查找/替换您项目中缺失的项目。不幸的是,我遇到了检测然后替换分层图像源(psd、ai 等)的情况。
1) 除了解析 item.name 之外,我看不到任何检测 AvItem 是否是分层图像中的层的方法,这是不可靠的,因为用户始终可以在项目面板中重命名项目。
2) 一旦我知道它是分层图像的一部分,我就无法弄清楚如何在不将图层替换为合并图像的情况下将其重新链接到正确的图像。 item.replace(new_path) 将用整个图像替换该项目,而不是图像中的图层。例如:
var item = app.project.item(3); //assuming this is the 'layer' we want to replace
item.replace(new_path);
那么,某处是否有一个秘密属性可以可靠地告诉我一个项目是否是分层图像的一部分,如果是,有没有办法重新链接它而不用整个合并图像替换图层?
编辑
这是一个猜测图层是否是分层图像的一部分的函数。它不是防弹的,但只要用户不重命名该项目,它就应该可以工作:
function isSourceLayered (av_item) {
// check if there is a "/"
if (av_item.name.indexOf("/") != -1) {
// check if it is in a "layers" folder
if (av_item.parentFolder.name.indexOf("Layers") != -1) {
return true;
}
}
return false;
}
【问题讨论】:
-
您也可以检查图层源,看看是否可以将其作为合成导入。它不会告诉您它是否 作为图层从合成中导入,但就像名称中的斜线一样,它是一个线索。
var io = new ImportOptions(File("c:\\myFile.psd")); if io.canImportAs(ImportAsType.COMP) { <probably a comp> }
标签: adobe extendscript after-effects