01)スクリプトの読み方

| コメント(0)

市川せうぞーさんの名もないテクノ手の
せうぞーさんの「セル内のオーバーフローを解消するスクリプト」
http://d.hatena.ne.jp/seuzo/20080923/1222106561

の読み方です。すいません。スクリプト全文掲載させていただきます。
(メールでは許可とったつもり)
せうぞーさんのこのスクリプトは便利な上に10行しかなくてソースも奇麗なのでカスタマイズや説明には最高の題材です。せうぞーさんありがとうございます。

スクリプトは上から順に実行されていきます。なので下記スクリプトも上から読んでいけばいいわけです。varとついているのは変数が最初に出てくるところです。

var sel = app.activeDocument.selection[0];
for (var i = 0; i < sel.cells.length; i++) {
	var txtObj = sel.cells[i];
	var danraku = txtObj.paragraphs[-1];
	for (var w=danraku.horizontalScale; w >= 10; w--){
		txtObj.recompose();//★ここ
		if (txtObj.overflows == false) {break}
		danraku.horizontalScale = w;
	}	
}
var sel = app.activeDocument.selection[0];

変数selにアクティブドキュメントの選択されたものの0番目を入れています。JavaScriptでは1番目からでなく0番目が最初です。

for (var i = 0; i < sel.cells.length; i++) {

forは繰り返しです。
var i = 0;
 変数iは0からスタート
i < sel.cells.length;
 変数iが選択されたセルの数より少ない間まで繰り返す。
i++
 1回繰り返すごとに変数iに1を足していく。
と言う意味です。対応する"}"は●1です。

	var txtObj = sel.cells[i];

変数txtObjに選択されたセルのi番目を入れる。

	var danraku = txtObj.paragraphs[-1];

変数danrakuに上のtxtObjの最終段落を入れる。[-1];は最後のという事です。AdobeInDesignScript独特の書き方です。普通のJavaScriptではエラーが出ます。

	for (var w=danraku.horizontalScale; w >= 10; w--){

こちらもforがあるので繰り返し文ひとつづつバラすと
var w=danraku.horizontalScale;
 変数wにdanrakuの水平方向の比率(たぶん100)を入れる。
 それがスタートの値
w >= 10;
 変数wが10より大きい間実行(長体が10%で止まるという事ですね。)
w--
 1回繰り返すごとに変数wから1を引いていく。
対応する"}"は●2です。

		txtObj.recompose();//★ここ

これはオーバーフローしているかどうかを再評価するコマンド(サブルーチン)です。
コマンド(サブルーチン)は();で終わっているのが特徴です。
()の中に何か入っている場合があります。

		if (txtObj.overflows == false) {break}

もしオーバーフローしていなければこの繰り返しを抜けます。●2に行きます。
もしもの処理はif文といいます。if(もしも文が正しいなら){実行内容}
となっています。

		danraku.horizontalScale = w;

オーバーフローしているとこの行が実行されます。
段落danrakuの長体を変数wにセットします。
このwは繰り返しがつづくごとに-1されていきます。

	}	

閉じ}●2です

}

閉じ}●1です

Comments are nofollow setting

コメントする

エントリー一覧

OpenID対応しています OpenIDについて
Powered by Movable Type 8.0.2
漢字イラストロジック-脳トレ京
FREE ONLINE SUDOKU