■プログラム説明(ソースコード説明)
色の変化は
(終了色-開始色) / 文字数
を1ステップとして処理します。この値と何文字目かを示すループ変数iと乗算し、開始色に加算します。これを文字数分繰り返すことで文字色をグラデーションにする事ができます。
■ソースコード
str = "文字列にグラデーションをかけます。手作業では面倒な処理です。";
startR = 255; // 開始RGB
startG = 255;
startB = 0;
endR = 0; // 終了RGB
endG = 0;
endB = 255;
dR = (endR - startR) / str.length;
dG = (endG - startG) / str.length;
dB = (endB - startB) / str.length;
docObj = activeDocument;
txtObj = docObj.textFrames.add();
txtObj.contents = str;
for (i=0; i<str.length; i++)
{
R = startR + i * dR;
G = startG + i * dG;
B = startB + i * dB;
txtObj.characters[i].fillColor = setColor(R,G,B);
}
function setColor(r,g,b)
{
var tmpColor = new RGBColor();
tmpColor.red = r;
tmpColor.green = g;
tmpColor.blue = b;
return tmpColor;
}
■使い方
1:描画するドキュメントをアクティブにします。
2:ファイルメニューからスクリプトを実行します。
3:文字の色がグラデーションで表示されます。
■ポイント
文字の色をランダムに変えたい場合には以下のようにMath.random()を使い、カラーの各RGBプロパティに値を設定します。
str = "文字色をランダムにします。手作業では面倒な処理です。";
docObj = activeDocument;
txtObj = docObj.textFrames.add();
txtObj.contents = str;
for (i=0; i<str.length; i++)
{
R = Math.random() * 255;
G = Math.random() * 255;
B = Math.random() * 255;
txtObj.characters[i].fillColor = setColor(R,G,B);
}
function setColor(r,g,b)
{
var tmpColor = new RGBColor();
tmpColor.red = r;
tmpColor.green = g;
tmpColor.blue = b;
return tmpColor;
}
■実際のスクリプトをダウンロード(sample.js.zip)