プロが教えるわが家の防犯対策術!

複数のプロパティを一行で書き換えたい

Photoshopのテキストのプロパティを一気に変更したいのですが
書き方がわからなくて困っています

docRef = app.activeDocument;
newTextLayer = docRef.artLayers.add();
newTextLayer.kind = LayerKind.TEXT;

これ

newTextLayer.textItem.contents="helloWorldText";
newTextLayer.textItem.size=14;

newTextLayer.textItem =({contents:"helloWorldText",size:14});
こんな感じで書きたいんです
スクリプティングガイドをみてもよくわかりませんでした
よろしくお願いします

A 回答 (2件)

acrobatのjavascriptは知りませんが…



WEBからReferenceを見ることができるので、そちらで確認なさるのが良いのでは?
http://livedocs.adobe.com/acrobat_sdk/9.1/Acroba …
(日本語ならヴァージョンが古いけれど…)
http://www.adobe.com/jp/support/products/pdfs/ac …

自分流の書式にしたければ、新しいメソッドを定義して拡張するなどすれば不可能ではないと想像しますが、そこまでするメリットがあるのかどうか疑問。
    • good
    • 0
この回答へのお礼

ありがとうございます

以前、誰かが一行でプロパティを変更していたのを見た記憶があるので
それがやりたかったんですが
自力では無理でした

教えていただいたリファレンスを見て勉強してみます

お礼日時:2010/10/04 09:49

プロパティをセットする関数を別に作っておく方法ではだめですか?


docRef = app.activeDocument;
newTextLayer = docRef.artLayers.add();
newTextLayer.kind = LayerKind.TEXT;

setProperties ( newTextLayer.textItem, {contents:"helloWorldText", size:14} );

function setProperties( tItem, p ) {
for ( var i in p ) tItem[i] = p[i];
}

強引に一行にするとこうかな。
docRef = app.activeDocument;
newTextLayer = docRef.artLayers.add();
newTextLayer.kind = LayerKind.TEXT;

( function( tItem, p ) { for ( var i in p ) tItem[i] = p[i]; } )( newTextLayer.textItem, {contents:"helloWorldText", size:14} );

この回答への補足

私の思っていたものは、これだったかもしれない

with(newTextLayer.textItem ){
contents = "helloWorldText";
size = 14;
}

けど
これを実行すると
処理はプロパティの回数分実行されてしまうので
結局時間短縮にはなりませんでした

補足日時:2010/10/05 09:59
    • good
    • 0
この回答へのお礼

ありがとうございます
確かに一行になるんですけど
Photoshopの処理は2回に分けられてしましますので
かかる時間は同じでした
一括で処理して時間短縮をしたいというのが
最終目的なので
望んでいるものとは少し違いました

お礼日時:2010/10/04 17:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!