クリエイター手抜きプロジェクト[116]AfterEffects 7.0編 一文字ずつ表示させる
── 古籏一浩 ──

投稿:  著者:


今回は短めのスクリプトです。以前、AfterEffects 6.5で入力した文字を一文字ずつアニメーションさせる、というものがありました。今回のAfterEffects 7.0版はテキストレイヤーに入力済みの文字を一文字ずつアニメーションさせる、というものです。


スクリプト1は同じ位置で文字を表示させます。ABCDの文字を選択してからスクリプト1を実行すると、同じ位置でA、B、C、Dの順番に一文字ずつ表示されます。スクリプト2では一文字ずつ順番に表示していきます。ABCDの文字を選択してからスクリプト2を実行すると

A
AB
ABC
ABCD

の順番に一文字ずつ表示していきます。タイプライター/キーボードで文字を入力するような感じと言えば分かるでしょう。

スクリプト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);
}
}



【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
Adobe Spryのページを用意しています。Dreamweaverからでも利用できるようになるでしょうから、どんな事ができるのか参考にしたい方はどうぞ。
< http://www.openspc2.org/reibun/Adobe_Spry/index.html
>

・安倍総理に聞きました。
 記者「美しい人生を送るにはどうしたら良いのでしょう?」
 総理「テレビを見ないこと、そして政治家にならないことですね」

photo
Ajaxライブラリリファレンス
古籏 一浩
ビー・エヌ・エヌ新社 2007-01

標準DOMスクリプティング JavaScript+DOMによるWebアプリデザインの基礎 Ajax Hacks ―プロが教えるWebアプリケーション構築テクニック エンジニアのための時間管理術 デザイニング・インターフェース ―パターンによる実践的インタラクションデザイン プロとして恥ずかしくないJavaScriptの大原則

by G-Tools , 2007/02/05