2011年7月24日日曜日

functionとforを流れで理解する

functionだのforだの連続処理の成り立ちがよく理解できないまま今日に至ったアチキの復習の備忘録。←およそまともな日本語になっていないことは承知。
//テキストフレームの最初の段落書体を小塚ゴシックに変更する
tObj = app. activeDocument. selection[0];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
ドキュメント内の複数のテキストフレームを選択しても、これだと最後に作成されたテキストフレームにのみ動作します。

選択した4つのテキストフレームの最初の段落を小塚ゴシックにしたい場合、
//テキストフレームの最初の段落書体を小塚ゴシックに変更する
tObj = app. activeDocument. selection[0];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";

tObj = app. activeDocument. selection[1];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";

tObj = app. activeDocument. selection[2];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";

tObj = app. activeDocument. selection[3];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
これで動作します。

tObj = app. activeDocument. selection[0];の [ ] 内の数値が替わっただけなので共通部分をfunctionでまとめます。
function KozG (){
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}
KozGは任意名の関数。
これを実行させるにはKozG();を呼び出したい回数分書く。
tObj = app. activeDocument. selection[0];
KozG ();
tObj = app. activeDocument. selection[1];
KozG ();
tObj = app. activeDocument. selection[2];
KozG ();
tObj = app. activeDocument. selection[3];
KozG ();

function KozG (){
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}
しかしこれだと手間は対して変わらない。で、パラメーター(引数)を用いる。ちなみに、この引数というやつが苦手だ。
KozG ();の()内に数値を入力すると関数に数値が渡される。
KozG(0);
KozG(1);
KozG(2);

この値を受け取るためにfunction内の()を(No)、[0]を[No]にすると変数Noに渡された値が入る。
KozG(0);
KozG(1);
KozG(2);
KozG(3);

function KozG (No){
tObj = app. activeDocument. selection[No];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}

テキストフレーム数を調べてその数を渡すのがfor文。

for(変数名=0; 変数名<繰り返す回数; 変数名++)
{
繰り返す処理
}
ドキュメント内の全てのテキストフレームの数は
app. activeDocument. textFrames. lengthで求められます。

for (i =0; i<app. activeDocument. textFrames. length; i++)
{
KozG (i) ;
}

function KozG (No){
tObj = app. activeDocument. selection[No];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}
変な文だけどctrl+Aで実行するととりあえず動作する。


選択したテキストフレームの数を求めるには

selObj = app. activeDocument. selection;

for (i =0; i<selObj. length; i++)


なので
selObj = app. activeDocument. selection;

for (i =0; i<selObj. length; i++)
{
KozG (i) ;
}

function KozG (No){
tObj = app. activeDocument. selection[No];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}
で完成^^ とりあえず今日はここまで。

0 件のコメント:

コメントを投稿