エクスプレッション 〜カウントダウン&アップ〜

勢いだけで書きはじめた旅の記録、あと10日分あることに気付いたよ。
(;´ρ`)なんてこったい…
旅の日記って、思ったより書くの難しいのね。
続けて書くのは大変なので、AE記事と交互にします。


さて、下記動画に誘発されて、カウントダウンタイマーを作りたいのですが、google先生に訊いてもこれといったのがなかなか見つかりません。

一見簡単そうなのに、簡単に作れるのは無いの??
何とか方法を見つけて作ったのがこれ↓

これは複雑なのはエクスプレッションだけで、その他は使い勝手は良いと思います。

では、作り方。
コンポジションは15秒で作りました。
とりあえず10:00→0:00の10秒カウントダウンが収まればいいってことで。

コンポジションにまず「ヌルオブジェクト」を配置します。
●レイヤー→新規→ヌルオブジェクト

そしてこのヌルオブジェクトを、Controlsと名付けます。

次にこのヌルオブジェクトControlsに3つエフェクトを適用します。
①:●エフェクト→エクスプレッション制御→スライダー制御
②:●エフェクト→エクスプレッション制御→スライダー制御
③:●エフェクト→エクスプレッション制御→チェックボックス制御

そして、①=number、②=amt_of_decimals、③=use_commasと名付けます。
これでヌルオブジェクトの下ごしらえは終わり。

続いてテキストレイヤーを配置します。
●レイヤー→新規→テキスト
名前はなんでもいいです。ここでは「countdown」としています。

ココまでの状態がこちら↓
20120914_3

そして、テキストレイヤーのソーステキストを展開します。
●テキスト→ソーステキスト
ここのストップウォッチマークを「Alt + クリック」して、以下のエクスプレッションを書きます。

num = thisComp.layer(“Controls”).effect(“number”)(“スライダー”);

amtOfDec = thisComp.layer(“Controls”).effect(“amt_of_decimals”)(“スライダー”);

commas = thisComp.layer(“Controls”).effect(“use_commas”)(“チェックボックス”);

//–

num = num + 0;

amtOfDec = amtOfDec + 0;

commas = commas == 1;

//–

if(commas){

//commas not requested

num.toFixed( amtOfDec );

}else{

//commas requested

 

//This function takes a positive whole number as a string

//and adds commas to it

function addCommas( str ){

finalResult = “”;

for( i = str.length – 1; i >= 0; i– ){

finalResult = str.charAt( i ) + finalResult;

if( (str.length – i) % 3 == 0 && i != 0 )

finalResult = “,” + finalResult;

}

return finalResult;

}

//–

intPart = Math.floor( Math.abs( num ) );

decPart = Math.abs(num) – intPart;

wasNeg = num < 0;

result = “”;

if( wasNeg )

result = “-” + result;

intPartString = intPart + “”;

decPartString = decPart.toFixed( amtOfDec ) + “”;

decPartString = decPartString.substring( 1 );

result = result + addCommas( intPartString ) + decPartString;

result

}
num = thisComp.layer(“Controls”).effect(“number”)(“スライダー”);
amtOfDec = thisComp.layer(“Controls”).effect(“amt_of_decimals”)(“スライダー”);
commas = thisComp.layer(“Controls”).effect(“use_commas”)(“チェックボックス”);
//–
num = num + 0;
amtOfDec = amtOfDec + 0;
commas = commas == 1;
//–
if(! commas){
//commas not requested
num.toFixed( amtOfDec );
}else{
//commas requested
//This function takes a positive whole number as a string
//and adds commas to it
function addCommas( str ){
finalResult = “”;
for( i = str.length – 1; i >= 0; i– ){
finalResult = str.charAt( i ) + finalResult;
if( (str.length – i) % 3 == 0 && i != 0 )
finalResult = “,” + finalResult;
}
return finalResult;
}
//–
intPart = Math.floor( Math.abs( num ) );
decPart = Math.abs(num) – intPart;
wasNeg = num < 0;
result = “”;
if( wasNeg )
result = “-” + result;
intPartString = intPart + “”;
decPartString = decPart.toFixed( amtOfDec ) + “”;
decPartString = decPartString.substring( 1 );
result = result + addCommas( intPartString ) + decPartString;
result
}

長いわw
こんなの自分の実力では書けません。
ソースはこちら。解説もあるので気になる人はどうぞ(英語のみ)。

あとは、ヌルオブジェクトControlsのなかにある、3つのエフェクトの数値をいじって、好きなカウントダウンやカウントアップを作ります。

number:好きな数字をキーフレーム付で打ち込むと、数字が増えたり減ったりする。
amt_of_decimals:小数点以下の桁数。1なら小数第一位まで、2なら第二位まで…
use_commas:4桁以上の数字で、「4,500,000」みたくカンマを使うか

最初の動画、大体こんなふうになってます。
20120914_4

あと、テキストレイヤーは「右よせ」での表記にしないと、桁数が変わるときカクンと変な動きになります。

バカみたいなことだけど、私はこれで30分悩んだし。
とりえずこんなところ。
円の周りを線が動く表現はあとで。


エクスプレッション 〜カウントダウン&アップ〜」への5件のフィードバック

  1. 7200fps

    以前使って大変便利でした。
    新しいプロジェクトで再び参照させてもらったのですが、
    ソースのリンクが切れています。。

    正しいコードはどこで見つかりますか?

    返信
  2. maple

    カウントアップが必要で探しましたが、これはすぐに使えてとても便利です。
    ただしttさんがおっしゃるとおりで、ピンクをコピペではエラーとなりますので、
    リンク先のソースから持ってきて日本語でスライダーとチェックボックスを手打ちで修正すればエラー解消されました。

    返信
    1. tt

      エラー吐きました。
      ソースから、日本語のところだけ打ち変えたら、出来ました

      返信

maple へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。