テキストファイルを読み込ませて処理を行う

前回はAfterEffects 6.5でテキストレイヤーを作成したりしましたが、今回はすでにあるテキストファイルの内容を読み込ませて自動的に配置するスクリプトです。
AfterEffects 6.5ではファイル選択ダイアログを表示させてファイルを指定させることができます。以下のスクリプトを実行するとファイル選択ダイアログが表示されます。ファイルを選択すると、選択したファイルの内容がテキストレイヤーとして配置されます。

filename = File.openDialog("テキストファイルを選択してください","");
fileObj = new File(filename);
if (fileObj.open("r"))
{
txt = fileObj.read();
app.project.activeItem.layers.addText(txt);
}

いくつかのテキストファイルを選択して実行させると上記のスクリプトでは改行されずに文字列は横一列で表示されてしまいます。文章などをAfterEffects 6.5で利用したい場合には不便です。そこで1行ずつ読み込ませて改行コードを付け加えるようにしたものが以下のスクリプトです。MacOS Xで動作確認していまずが、もしかしたらWindows版では駄目かもしれません。

CR = String.fromCharCode(13);
filename = File.openDialog("テキストファイルを選択してください","");
fileObj = new File(filename);
if (fileObj.open("r"))
{
txt = "";
while(!fileObj.eof)
{
txt = txt + fileObj.readln() + CR;
}
app.project.activeItem.layers.addText(txt);
}

これで改行も正しく行われ文章らしくなります。
同じようにして前回作成したルパン三世風のオープニングタイトルもファイル選択ダイアログを利用したものにすることができます。それが以下のスクリプトです。

fps = 10 / 30;
filename = File.openDialog("テキストファイルを選択してください","");
fileObj = new File(filename);
if (fileObj.open("r"))
{
txt = fileObj.read();
layObj = app.project.activeItem.layers.addText();
for (i=0; i<txt.length; i++)
{
layObj("テキスト")["ソーステキスト"].setValueAtTime(i*fps,txt.charAt(i));
}
}

せっかくテキストファイルが読み込めるので、手作業では面倒な「1文字ずつ指定位置に配置する」という処理をスクリプトでやってみましょう。以下のスクリプトは1文字ずつ左側から配置していきます。1文字ごと個別のレイヤーになるので、文字をばらばらに飛ばしたりする事もできるようになります。スクリプトを利用すれば面倒な事も簡単にできる良い例かもしれません。

startX = 10;
x = startX;
y = 10;
dx = 14;
dy = 14;
filename = File.openDialog("テキストファイルを選択してください","");
fileObj = new File(filename);
if (fileObj.open("r"))
{
while(!fileObj.eof)
{
txt = fileObj.readln();
for (i=0; i<txt.length; i++)
{
layObj = app.project.activeItem.layers.addText(txt.charAt(i));
layObj("position").setValue([x,y,0]);
x = x + dx;
}
x = startX;
y = y + dy;
}
}

表示する座標の開始位置は

startX = 10;

の10がX座標の開始位置、

y = 10;

の10がY座標の開始位置になっています。文字の大きさによって幅を変える必要があり、その場合は

dx = 14;
dy = 14;

の値を変更してください。dxが横の間隔、dyが縦の間隔になっています。




[サンプルをダウンロード]