こんばんは、150kwです。最近エクスプレッションを勉強しだしました。
アドビ Focus In の「エクスプレッションでアニメーションを制御する(紹介編)」の4/4ページに「ソーステキストにエクスプレッションで時間表示」の記載がありま す。
http://www.adobe.com/jp/joc/focusin/tips/ae_recipe03_4.html
この中で「ミリ秒」を表示する部分 「time.toFixed(3).substr(-2)」 について、関数の解説をお願いします。
(インターネット等で調べましたが、解が見つかりませんでしたので、ここに質問させていただきました。尚、時間、分、秒の表示については理解できまし た。)
以上宜しくお願いします。
こんにちは。
toFixed()もsubstr()もJavaScriptのメソッドです。
ゆえにExpressionのリファレンスには掲載されていないのでしょう。(←未確認)
つまり、「time.toFixed(3).substr(-2)」は、
timeを、小数点以下3桁の文字列に変換し、その文字列の後ろから2文字を抜き出す
‥‥という事です。
timeはご存知の通り、小数点以下がいくつも連なる数値です。その数値を整形して、末尾2文字を取り出しているのですネ。
追記:
ネットで調べる時は、
JavaScript toFixed
JavaScript substr
‥‥で検索してみてください。すぐに見つかるはずです。
>Adobe様
‥‥でも、この例文。期待した結果になります?
「順番に時間、分、秒、ミリ秒を計算してテキストとして表示」とありますけど。
小数点3桁で四捨五入した末尾2文字は、果たしてミリ秒と呼べるの?
実際に例文をExpressionにペーストしても、1フレーム進むごとに「00」「33」「67」の繰り返しになっちゃいますよ。(30fpsの場 合)
ストップウォッチ的な表示だと、time.toFixed(2).substr(-2); だと思うんですけど。
もしくは1/1000秒=ミリということで、time.toFixed(3).substr(-3); とか。(でも普通は2桁にしますよネ)
きうまん様、早速丁寧な回答をして頂き、ありがとうございます。お礼申し上げます。
◆お蔭さまでこの関数を理解することができました。
◆また、紹介頂いたAjaxTowerサイトは、初心者にもわかりやすく記載されており、とても良いサイトだと感じました。
◆「>Adobe様」と記載した個所は、私もその通りだと思います。
time.toFixed(3).substr(-2) では、1フレーム進む毎に00、33、67が繰り返されているだけで、たまたま早く切り替わるので、1/100秒カウンター風に見えていたのですね。
time.toFixed(2).substr(-2) でバッチリです。
time.toFixed(1).substr(-1) で1/10秒カウンターもできました。
◆余談ですが、昨夏Production Premium CS5を購入し、本命はPremiere Proを使用しているのですが、After Effectsの門を叩いたら、その奥行きの広さにびっくりしている今日この頃です。
North America
Europe, Middle East and Africa
Asia Pacific