ExtendScript从搜索的Comp结果中获取索引号

时间:2015-05-13 21:40:22

标签: javascript arrays extendscript

我有这个代码正在整理后效果中的各个项目并返回项目中的所有组合,然后我根据我正在寻找的特定构图缩小它,在这种情况下,一个以组装。我得到了名字,这很棒,但我真正需要的是索引号和名称,所以当我搜索汇编时,我得到一个app.project.item(3)的返回,它在项目窗口中的索引。每当我尝试从阵列中获取数字时,我似乎得到的是总数量没有帮助。

感谢。

function retrieveProjectItems(itemType){
var typeOptions = ["Composition", "Folder", "Footage"];
for(var t = 0; t<3; t++){
    if(itemType == typeOptions[t]){
        var proj, itemTotal, curItem, itemArray;
        itemAry = [];
        proj = app.project;
        itemTotal = proj.numItems;
        for(var i = 1; i <= itemTotal; i++){
            curItem = proj.item(i);

            //alert(curItem.name);


            if(curItem.typeName == itemType){
                itemAry[itemAry.length] = curItem.name;
                }
            }
        return itemAry;

        }
    }
}
retrieveProjectItems("Composition");
//alert(comps); lists all COMPS in the Array

var comps = itemAry;
var compWithAssemble;
for(var i in comps){
if(comps[i].indexOf("assemble") > -1){ ///search for part of the name///////////////////////////////////
    compWithAssemble = comps[i];

    break;
}
}
// compWithAssemble has the string you are looking for.
alert(compWithAssemble);
//app.project.item(3).selected = true;
compWithAssemble.selected = true; //I'm looking to make this work...

1 个答案:

答案 0 :(得分:1)

我假设你想以编程方式找到名为"assemble"

的图层的合成

这段代码

if(comps[i].indexOf("assemble") > -1){ ///search for part of the name///////////////////////////////////
    compWithAssemble = comps[i];

    break;
}

没有为您提供所需的结果,因为comps[i]是CompItem的对象,而不是数组或集合。您需要先为每个comp[i]检索图层集合。然后,当您拥有该LayerCollection时,可以使用.byName()方法找到名为"assemble"的图层。如果您没有获得返回的图层,则会收到null,否则您将收到图层对象。

它可能看起来像:

var comps = itemAry;
var compWithAssemble;

for (var i in comps){
    if(comps[i].layers.byName("assemble") != null) {
       compWithAssemble = comps[i];
       break;
    }
}