NEKOMATAYA

1- レス

何でも質問箱


[43]kiyo:06/06/14 07:39:54 ID:tR5UppF+
続きです
この操作(選択したレイヤが欲しい)は、必要なケースの多い操作なので
あらかじめプロパティが用意されています。
(compItem).selectedLayers ←コレです。前の方のコードにでてますね。
ひとつづつ問い合わせなくてもこのプロパティをアクセスれば現在コンポで選択されている
レイヤの配列を取り出すことが出来ます。
得られる配列は、「レイヤのID」ではなく「レイヤオブジェクト」なので、
プリコンポの場合はこの配列からレイヤIDの配列を作ります。
myPreComp=new Aray();//引数用の配列
for (idx=app.project.acteiveItem.activeLayers.lengh-1; idx>=0; idx++){
myPreComp.push(app.project.activeItem.activeLayers[idx].index);
};
こんなカンジです。
myArray.push(要素);
pushメソッドを使うと配列に連続して要素を追加する事が出来ます。
インデックスを加算しながら代入するよりもスマートなカンジです。
さらにここでは、activeLayers プロパティにインデックスの大きい順に
レイヤが入っているみたいなので、逆順でレイヤを取り出してあります。
ケースによっては別の情報からリストを作成する場合も考えられます。
正順や順不同で取り出した場合は、配列のsortメソッドで並べ直すと良いと思います。
sortedArray=myArray.sort();
その場合sortメソッドはこんな風に使います。
今回の目的ならばプリコンポの引数に直接ソート付きで書き込んでも良いでしょう。
newPreComp=app.project.activeItem.layers.precompose(myPreComp.sort(),"プリコンポ",true);
実はこうすると、ちびっとだけメモリが節約できます。(無名オブジェクトなのですぐにメモリが開放されます)
色々トライしてみてくださいね。では!


名前

E-mail



0ch BBS 2004-10-30 (+Nekomataya/2005-02-17)