获取数组中对象的索引

时间:2012-01-29 23:32:58

标签: actionscript scripting adobe-illustrator jsx

我正在构建一个插件,我正在使用actionscript来保存插图文档中对象的选择,然后再引用它。

var arrObj:Array=new Array();
arrObj.push(app.activeDocument.selection[0]);

如果我现在选择文档中的同一个对象并检查它是否在数组中,则返回-1作为索引值。

var id:int=arrObj.indexOf(app.activeDocument.selection[0]);
trace (id); //-1

为什么选择不被视为与数组相同的对象?

1 个答案:

答案 0 :(得分:1)

我想出了一个解决方案,用于保存数组中的选定对象,当在插图文档中再次选择对象时,它会指出数组中该对象的索引。选定的对象数据类型是“PathItems”,并且有一个名为name的变量。您所要做的就是将此变量设置为您选择的值,并将其保存在另一个数组中。

var arrObj:Array=new Array();
var nameHold:Array=new Array();

arrObj.push(document.selection[0]); // save the selection in an array
var hold:PathItem=document.selection[0];
hold.name="index1"; // setting the name variable of the selected object to a value of choice
nameHold.push(hold.name); // adding the name value in an array 

现在,所选对象及其对应的名称值存储在同一索引的数组中...您可以使用name变量将所有“PathItems”相互比较,如果名称匹配,则可以通过以下方式获取索引:在数组中使用.indexOf(“name”)方法。