【スクリプト】選択されたオブジェクトの中からグループアイテムだけを取得したい
javascriptでイラレのスクリプトを書きたいのですが、
選択されているオブジェクトの中からグループアイテム(入れ子含む)を取得するには、どう書いたらいいでしょうか?
全くの初心者なので教えていただけると幸いです。
javascriptでイラレのスクリプトを書きたいのですが、
選択されているオブジェクトの中からグループアイテム(入れ子含む)を取得するには、どう書いたらいいでしょうか?
全くの初心者なので教えていただけると幸いです。
とりあえず初心者向けということであれば、自分がよくやっている書き方がちょうどいいかと…w
再帰処理ともちょっと違う感じですが。
var sel = app.activeDocument.selection; //選択オブジェクト配列
var groups = []; //見つけたグループをためておく空配列を宣言
getGroups(sel); //グループ取得の関数
alert(groups.length + "こ!"); //取得したグループの個数を叫ぶ
function getGroups(obj){ //例の関数
for(var i = 0; i < obj.length; i++){ //ループ
if(obj[i].reflect.name == "GroupItem"){
groups.push(obj[i]); //配列へ追加
getGroups(obj[i].pageItems); //グループの中身でまた関数
}
}
}
上記では、GroupItemのPageItemsコレクションとSelection配列とを、ひとつの関数を使いまわしてループ処理しています。
実際、Ten A先生の示されるとおりのアプローチのほうがスマートだと思います。(たぶんgroupsではなくgroupItemsコレクションですw)
おすすめしたいのは、初心者なりに、どこまでやってみたかを書いておくことです。
そうすればそのレベルに合わせて、ちょっとだけ上達できるような、わかる範囲でおさまる回答が得られるかと(たぶん…)。
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.