Получить индекс объекта в массиве - PullRequest
2 голосов
/ 30 января 2012

Я создаю плагин и использую 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 Ответ

1 голос
/ 30 января 2012

Я нашел способ сохранить выбранные объекты в массиве, и при повторном выборе объекта в документе-иллюстраторе он будет указывать индекс этого объекта в массиве. Типы выбранных объектов являются «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 

Теперь выбранный объект и соответствующее ему значение имени хранятся в массивах с одним и тем же индексом ... вы можете сравнить все "PathItems" друг с другом, используя переменную name, и, если имена совпадают, вы можете получить индекс с помощью использование метода .indexOf ("name") в массивах.

...