Вземете индекс на обект в масив

Създавам плъгин и използвам actionscript, за да запазя селекцията на обект в документ на illustrator и след това да го препратя по-късно.

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

Ако сега избера същия обект в документа и проверя дали е в масива, той връща -1 за стойността на индекса.

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

Защо селекцията не се счита за същия обект като този в масива?


person user1177060    schedule 29.01.2012    source източник
comment
Използвате ли CS Extension builder? Има ли някаква функционалност за запазване на препратки към обекти? Не съм го използвал, само скрипт с ExtendScript Toolkit. От моя опит, веднага след като извикванията към Illustrator завършат, предполагам, че обхватът на променливите ще бъде загубен, така че трябва да намерите други начини да следите този избран обект (позиция, външен вид и т.н.)   -  person George Profenza    schedule 30.01.2012
comment
Да, използвам Cs Extension builder. Мога да получа достъп до обектите в масива arrObj и да прилагам промени към тях и това ще се появи в документа на illustrator. Но не работи обратното, когато бих искал да проверя дали обектът в документа е записан в масива или не.   -  person user1177060    schedule 30.01.2012


Отговори (1)


Измислих начин за запазване на избраните обекти в масив и при повторно избиране на обекта в документа на илюстратора ще посочи индекса на този обект в масива. Типовете данни на избраните обекти са "PathItems" и имат променлива, наречена име. Всичко, което трябва да направите, е да зададете тази променлива на стойност по ваш избор, както и да я запишете в друг масив.

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("име") в масиви.

person user1177060    schedule 30.01.2012