DTPab

印刷やデザイン、アドビ製アプリやスクリプトなど、雑多な技術ブログ

選択したオブジェクトがアンカー付きオブジェクトかどうかを判定する

どういう実装がいいのかいまいち決めきれないものの一つにこれがある。
いま使っているのは下記2種類。

var sel = app.activeDocument.selection[0];

// 1: アンカー付きオブジェクト専用プロパティにアクセスしてエラーを起こす
try {
    sel.anchoredObjectSettings.anchorPoint;
    $.writeln("1: "+true);
} catch (e) {
    $.writeln("1: "+false);
}

// 2: parentプロパティのインスタンスがCharacterコンストラクタかどうか確認する
if (sel.parent instanceof Character) {
    $.writeln("2: "+true);
} else {
    $.writeln("2: "+false);
}

どちらの場合も、グループオブジェクトをまるごとアンカー付きオブジェクトにしているケースで、グループメンバーのひとつを選択した状態で行うと正しく動作しない(当たり前である)。

どちらが正しいわけでもないので、もしほかにいい方法があればぜひご教示いただきたい…。