propertyを表示するパネル

お休み終わっちゃいましたねぇ…休日に某公園へ行ってきたのですがフォーゼのショーがあるためか男の子率高かったです。うちの子は全く興味ありませんのでチラ見した程度ですが、フォーゼが机に座って一心不乱にサインを描いていました。その横でメテオ?がチビっ子と握手しつつお見送りしていました。正義の味方というのもなかなか大変はようです。
ところで皆様、CS6への移行準備はよろしいでしょうか?うちは基本、秋までは様子見なのですがオブジェクトの調査は導入までには済ませてしまいたいと思っている訳です。基本的にお試しバージョンダウンロードしての短期決戦です。まあ、8割方終わっているのは内緒ですが最終的にはリリースもので確認しておかないと痛い目に遭いかねませんので。
そうそう、新しいバージョンとか出ると以前のスクリプトが動くのかとか気になりますよね?今回も結構プロパティ増えてたりしてその調査に結構な時間を取られたりしちゃいます。
そこで、今回お届けするのはちょっとしたパネルです。作業中にこのオブジェクトのプロパティってどんなのあったっけ???という場合に対象物を選択してポチッとクリック一発でプロパティと現在の値が表示される優れものです。もちろんテキストエリアにapp.activeDocument…なんて入力してポチッてもオkです。おまけにIndesign、Illustrator、PhotoshopついでにIncopyにまで対応すると言う親切設計。パネルですので要らないときは折り畳んでおけば邪魔になりません。そして、おそらくCS6でも動きます。と言う訳でご覧下さい。

取りあえずZXPをインストールしたい方は一番下のリンクをぽちっといてください。ただ単に配布するのは面白くも何ともないので少しだけ説明しておきます。
今回のコードは以下の3点。

propertyExplorer.mxml
propExpJSX.as
propInf.jsx

まずはメインのmxmlから。

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:WindowedApplication xmlns:mx=”http://www.adobe.com/2006/mxml&#8221;
    width=”365″ height=”392″ historyManagementEnabled=”false”
    layout=”absolute”>
    <mx:Script>
        <![CDATA[
            import mx.controls.*;

            private var hstNm:String = HostObject.mainExtension;

            [Bindable]

            public function getPropNm():void
            {
                rtVal.text = propExpJSX.getProp(trgt.text);
            }
        ]]>
    </mx:Script>
    <mx:VBox height=”100%” width=”343″
        paddingTop=”10″ paddingLeft=”10″ horizontalCenter=”0″>
            <mx:Button id=”getTgt” label=”get Prop” click=”getPropNm()”/>
            <mx:TextInput id=”trgt” width=”320″ text=””/>
        <mx:TextArea id=”rtVal” width=”320″ height=”300″ text=””/>
    </mx:VBox>
</mx:WindowedApplication>

external.HostObjectにアクセスする部分はこちら。

//propExpJSX.as
package
{
    import flash.external.HostObject;
    
    public class propExpJSX
    {
        [Embed(source=”./propInf.jsx”,
            mimeType=”application/octet-stream”)]
        private static var EsInitClass: Class;
        
        public static function getProp(tg:String):String
        {
            var objct:String,tmp:String;
            var scriptObject: Object = new EsInitClass();
            var initScript:String = scriptObject.toString();
            var myBridgeScript:HostObject =
                HostObject.getRoot(HostObject.extensions[0]);
            myBridgeScript.eval(initScript);
            return myBridgeScript.propInf(tg);
        }
    }
}

で、肝心のコアはこちらのJSXだったりします。
こちらでプロパティを収集してテキストにしてパネルに返す訳です。

//propInf.jsx
function propInf(str) {
    try{
        var obj,tgt ;
        if (str!=””) {
            eval(‘obj =’ + str);
            } else {
                tgt = app.activeDocument.selection;
                if (tgt.typename==”TextRange”){
                    obj = tgt;
                    } else {
                        obj = tgt[0];
                        }
                    }
        } catch(e){
            return “Error occured.”
            }
    if (obj){
        var result = “”;
        for (var a in obj){
            try{
                result += a + ” : ” + obj[a] + “\r”;
                for (var b in obj[a]){
                    result += a + “.” + b + ” : ” + obj[a][b] + “\r”;
                    }
                } catch (e) {
                    result += a + ” : NA\r”;
                    }
            }
        return result;
        }
    return “nothing”;
    }

一応、実行イメージはこちら。

aiprop.png

idprop.png

psprop.png

そして、肝心のzxpはこちらです。仕様が変わってインストールするとJSXファイルはswfファイルからスプリットされる様になっています。ですから挙動が気に入らない場合はjsxファイルを編集すると幸せになれます。

propertyExplorer.zxp

広告

propertyを表示するパネル」への1件のフィードバック

  1. zxpは「CS5ServiceManager」とか「CS6ServiceManager」フォルダ内の「extension」フォルダに展開されます。中をのぞけば分かりますが、おなじみjsxファイルが鎮座しております。この子を編集すると挙動が変わります。
    もう一つ、セレクションの情報を得たい場合、テキストエリアは空にしておいて下さいね。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中