RandomTypo
・・・上手い言い方が見つからなかったのですが、こんなのです。良くありますよね。
後々使いまわせるようにエクスプレッションで書いておきました。
実際のエクスプレッションや使用法については以下から。
_text = text.sourceText;
if( effect("duration")("スライダ") > 0){
_duration = effect("duration")("スライダ");
} else {
_duration = 2; //ここを変える
}
allStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
_cursor = Math.floor(time / _duration*_text.length);
_output = new String();
if( _cursor <= _text.length-1){
_output = _text.substring(0,_cursor);
_outFinal = _output.concat( allStr.charAt( Math.floor( random(allStr.length))));
_outFinal;
} else {
_text;
}
コードが汚いのはご勘弁ください...。
これをソーステキストのところにコピペすれば、とりあえずは動作します。
特徴としては、文字が出揃うまでの時間を指定することができます。
デフォルトで2秒ですが、3行目の_durationを変えれば秒数が変わります。また、エフェクトの「スライダ制御」を適用して、名前をdurationに変えればスライダでの調節も可能です。
文字数が異なっていても、上の動画のように変化の長さをぴったり一致させることができるので、複数のシーンで揃えた演出をしたい場合は便利かと思います。
本当はキーフレーム制御にしたかったのですが、キーフレームが無い状態だとエラーが出ると思ったのでやめました。キーフレームやエフェクトの存在をtrue/falseで得る方法ないのかな。ありそうだけど。
Comments:2
- 山崎 2009年7月16日 17:49
はじめまして。山崎と申します。大変かっこいいエクスプレッション参考になりました。
ちなみに当方のAEと表示の異なる部分があり、このスクリプトを実現させるために少々手間取りました。これはAEのバージョンやMacやWin版の違いかと思われますが、念のためお知らせします。
effect("duration")("スライダ") の部分で、durationというのはエフェクト>エクスプレッション制御の中にある「スライダ制御」エフェクトのことではないでしょうか?
effect("スライダ制御")("スライダ")と書き直したら正常に動きました。
当方の環境はMacG5、AE7.0です。これからもよろしくお願い致します。- guponex 2009年7月18日 18:28
報告ありがとうございます!
文中で一応強調表示しているのですが、「スライダ制御」を適用の上、そのエフェクトの名前を「duration」に書き換えないと動きません。。。
なのでエフェクト名は書き換えずに、スクリプト側を書き換えても同様に動きます。
分かり辛く、手間取らせてしまったみたいですみません・・・。