M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2008年10月24日 02:04

InDesignやIllustratorのJavaScriptでオブジェクトの種類(クラス名)を調べる方法がたくさんあるよ(2):使用ソフトのバージョンによって使い分けよう

このエントリーをはてなブックマークに追加 mixiチェック

昨日のAdobeのソフトでオブジェクトの種類(クラス名)がわかるための方法が3つあるよ、というので、

(function(){
  var objDoc  = app.activeDocument;
  var selObjs = objDoc.selection;
  
  alert(selObjs[0].constructor.name); // ①JavaScript実装
  alert(selObjs[0].typename);         // ②PICTRIX風
  alert(selObjs[0].toString() );      // ③古籏一浩風
  
})();

これをIllustrator CS3で、テキストを選んで実行させると、

AI CS3:

① TextFrame
② TextFrame
③ [TextFrame ]

と得られるので、どれがいい? ていう話なんですけれども、大本命の①はIllustrator 10では動かないことが判明!

AI 10:

① ×(エラー)
② TextArtItem
③ [TextArtItem ]

よって、

  • Illustrator 10対応を考えたときは②
  • Illustrator 10対応をしないときは①または②、JavaScript的には①
  • という感じがしました。②の方法は、Adobeのオブジェクトだけ出来るのかな?

    一応、比較のために、自作のクラスで試すため下記コードをIllustrator 10/Illustrator CS3で実行したところ、

    function Hoge() {};
    var x = new Hoge; 
    alert(x.constructor.name); // ①JavaScript実装
    alert(x.typename);         // ②PICTRIX風
    alert(x.toString());       // ③古籏一浩風

    AI 10:

    ① undefined
    ② undefined
    ③ [object Object]

    AI CS3:

    ① Hoge
    ② undefined
    ③ [object Object]

    となりました。これから言えるのは、typenameというプロパティは自作のオブジェクトじゃ使えないこと、AI 10が微妙、ていうことです。ちなみにコアオブジェクトにもtypenameプロパティはない。あったら怖い。

    参考:
    任意のオブジェクトのクラス名をどうやって得るの? - 理系学生日記 [d.hatena.ne.jp]

    投稿 大野 義貴 [DTP] | |

    トラックバック(0)

    トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2640

    コメントする