2

私はプラグインを構築しており、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

選択が配列のオブジェクトと同じオブジェクトと見なされないのはなぜですか?

4

1 に答える 1

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")メソッド。

于 2012-01-30T18:16:09.297 に答える