今回は短めのスクリプトです。以前AfterEffects 6.5で入力した文字を1文字ずつアニメーションさせる、というものがありました。今回のAfterEffects 7.0版はテキストレイヤーに入力済みの文字を1文字ずつアニメーションさせる、というものです。
スクリプト1は同じ位置で文字を表示させます。ABCDの文字を選択してからスクリプト1を実行すると、同じ位置でA,B,C,Dの順番に1文字ずつ表示されます。
スクリプト2では1文字ずつ順番に表示していきます。ABCDの文字を選択してからスクリプト2を実行すると
A
AB
ABC
ABCD
の順番に1文字ずつ表示していきます。タイプライター/キーボードで文字を入力するような感じと言えば分かるでしょう。スクリプト3はスクリプト2とは逆に文字を後ろから表示します。ABCDの文字の場合は以下のように表示されます。
D
CD
BCD
ABCD
文字の表示速度を変えるには先頭の行の
fps = 10 / 30;
の値を変更してください。1/30秒にするのであれば
fps = 1 / 30;
とします。1/60なら
fps = 1 / 60;
になります。これらのスクリプトは文字に色などを指定する前(属性を指定する前)に実行してください。色などを設定した後では、期待通りに動作しないためです。
【スクリプト1】
fps = 10 / 30;
selObj = app.project.activeItem.selectedLayers;
for (i=0; i<selObj.length; i++)
{
txt = (selObj[i].sourceText.value).toString();
for (j=0; j<txt.length; j++)
{
selObj[i].sourceText.setValueAtTime(j*fps,txt.charAt(j));
}
}
【スクリプト2】
fps = 10 / 30;
selObj = app.project.activeItem.selectedLayers;
for (i=0; i<selObj.length; i++)
{
txt = (selObj[i].sourceText.value).toString();
str = "";
for (j=0; j<txt.length; j++)
{
c = txt.charAt(j);
str += c;
selObj[i].sourceText.setValueAtTime(j*fps,str);
}
}
【スクリプト3】
fps = 10 / 30;
selObj = app.project.activeItem.selectedLayers;
for (i=0; i<selObj.length; i++)
{
txt = (selObj[i].sourceText.value).toString();
str = "";
for (j=0; j<txt.length; j++)
{
p = txt.length - 1 - j;
str = txt.substring(p, txt.length);
selObj[i].sourceText.setValueAtTime(j*fps,str);
}
}