イトウ先生のTipsnoteAfterEffects CC 2017・カンマ区切りの文字列をランダム表示にする

イマジカデジタルスケープ 短期集中クリエイティブ講座

イマジカデジタルスケープ・AfterEffects・Photoshop・HTML・CSS・JavaScript・1日トレーニング

Web・動画・映像・ゲーム・DTP・CG・Adobe Creative Cloud・キャリア・就活に

 
 
1 11月・12月・日曜開講のお知らせ
 

お客様index

企業・自治体のお客様に 業務効率化、コスト削減に
クリ博登録者・学生の方に 割引トレーニングはコチラ


イトウ先生のTipsnote


イトウ先生のTipsnote:目次

【 AfterEffects CC 2017 : カンマ区切りの文字列をランダムに表示する 】

こんにちは、イマジカデジタルスケープの伊藤和博です。
今週はAfterEffects CC 2017から、「カンマ区切りの文字列をランダムに表示する」をご紹介します。
AfterEffects上で乱数を作成する場合は、テキストレイヤーのソーステキストにrandom()メソッドのエクスプレッションを使うことで可能になりますが、このrandom()メソッドはあくまでも0未満の【数字】を作成するものになります。
そこで今回は、カンマで区切った任意のテキストを呼び出し、一定の間隔で文字をランダムに入れ替える、という方法をご紹介します。
呼び出し元としてカンマ区切りのテキストレイヤーを用意しておき、random()メソッドとsplit()メソッドを使ってその文字キャラクタを一定の間隔で呼び出し、ランダムに入れ替える、というものです。

さっそくやってみよう!

まずは、以下のようなテキストレイヤーを1つ用意しておきます。カンマで区切ったテキストをただただ入力するだけで文字は改行してもかまいません。この時の文字サイズ、カラー、カンマ間の文字数、和文欧文数字などの種類などは問いませんが、カンマを元にテキストを分解して表示するため、カンマそのものは表示できません。カンマを表示したい場合は区切りの文字キャラクタに別の文字キャラクタを設定すれば可能です。

以下のサンプルは、「AfterEffects,Premiere Pro,Illustrator,Photoshop,InDesign,Dreamweaver,Animate,Bridge」という文字を入力しています。


Aecc17_ex001

次に、空のテキストレイヤーをタイムラインの一番上に作成し、ソーステキストにエクスプレッションを設定します。


Aecc17_ex003

エクスプレッションの箇所に以下のように入力します。

posterizeTime(1)
x=random(7)
y=Math.round(x)
thisComp.layer(2).name.split(",")[y]

Aecc17_ex005

posterizeTime(1)

このレイヤーのみのフレームレートを設定します。()内の数字がフレームレートになります。今回の例では1と入力してあるため、1秒間あたり1フレーム、つまり1秒あたりに1回新しいフレームに更新=1秒に1回、新しい文字が表示される、になります。()内には小数点以下の数字も入れられるため、posterizeTime(0.5)とすれば、1秒間に0.5回=2秒に1回、新しい文字が表示される、になります。

x=random(7)

まずrandom()メソッドは、乱数を発生するメソッドです。ただrandom()とだけ書くと、1未満の小数点以下の数も含めた乱数を発生します。今回、random(7)としていますが、この7は、7以下の小数点以下の数も含めた乱数を発生する、という意味になります。なぜ7という数字にしたのかは、今回表示させたい文字は・・
「AfterEffects,Premiere Pro,Illustrator,Photoshop,InDesign,Dreamweaver,Animate,Bridge」の8単語あり、 JavaScriptでは1個目を0個目から数えることから7にしています。
x=random(7)のx=は、xは変数宣言となり、=は右辺を左辺に代入する、という代入演算子で、今回のこの例ではxという変数(という入れ物)を作成し、その中にrandom(7)で作成した乱数を代入する(入れておく)という意味になります。
ちなみにこの「x」という変数の名前はaでbでも別の任意の文字でかまいません。

y=Math.round(x)

今回、カンマ区切りの文字列は全部で7つあるため、何番目の文字を取得するのか、その番号を整数で取得する必要があります。現在xに入っている値は7以下の小数点以下の数も含んだ数字が入っていますので、このうち整数部分だけ必要になりますが、このMath.round()とは、()の中に入っている値のうち、整数部分のみを返す、という意味になります。
Math.round(x)で取得した値を、変数yに入れて格納する、という意味になります。ちなみにこの「y」という変数の名前も「x」と同様、aでbでも別の任意の文字でかまいません。


thisComp.layer(2).name.split(",")[y]

意訳では、「このコンポジションの、2番目のレイヤーの、レイヤー名を、カンマで分割し、分割したものの何番目の値を返す」という意味になります。
thisComp.layer(2).name.までは場所を特定しており、layer(2)は、タイムラインパネル内の上から数えて2番目のレイヤー、になります。JavaScriptでは通常1個目は0個目から数えますが、layerを指定する時は1個目から数えます。
次のsplit(",")[y]は、split()メソッドといい、()内の文字キャラクタで指定した場所の要素を分割し配列にする、というメソッドで、この場合は「AfterEffects,Premiere Pro,Illustrator,Photoshop,InDesign,Dreamweaver,Animate,Bridge」というレイヤー名を()内にあるカンマで区切って、個別の単語に分解(スプリット)する、の意味となります。
次の[]は、[]内にある数字を呼び出す、になりますが、[]内にはyが入っており、yにはもともとrandam()で作成された乱数からMath.round()で取得した整数のみが入っていますので整数が入ります。この整数がposterizeTime(1)によって1秒ごとに書き換わる、という仕組みで、文字が1秒ごとに入れ替わる、になります。

カンマ区切りのテキストレイヤーを非表示にし、エクスプレッションを適用したレイヤーの位置を整え、「Adobe」のテキストレイヤーを追加してレンダリングしたものが以下のものになります(約5秒。音は鳴りません)。


Aecc17_ex007



ちなみに、エクスプレッションで参照しているのはあくまでも「レイヤー名」となるため、レイヤー内のテキストそのものは改行していても問題なく動作します。またガイドレイヤーに変更してもレイヤー名の参照が可能ですので、間違ってレンダリングしないようにするにはガイドレイヤーにしておくといいでしょう。

文字をランダムに入れ替えるという作業を行う場合に、何秒目から何秒目までこの文字を表示して・・と1レイヤーづつ作業していると、文字を入れ替える場合などに同じ作業の繰り返しで力技になってしまいますが、一度このエクスプレッションを作成しておけば、レイヤーの中に入れたカンマ区切りの文字をコピペで入れ替えるだけ、最小のレイヤー数で同じスキームのものを作ることができますのでぜひ活用してみてください。

関連講座

↑ページTOPへ

| カテゴリ | | Web | DTP・デザイン | CG・動画・映像 | キャリア・就活 |
| お客様 Index | | 企業・自治体のお客様に | 学生の方に |
| 目的別・状況別 Index | | Webデザイン入門セミナー | 映像編集入門セミナー | DTPデザイン入門セミナー | 魅力的なポートフォリオ作成 |
| Adobe CCを覚えたい方に | | Photoshop CC 2015の使い方・基本 | Illustrator CC 2015使い方・基本 |
| 画像をきれいに編集する方法 | 読みやすい文字の組み方 |
| HTML / XHTML / CSSの基礎知識 | HTML5 / CSS3の基礎知識 | JavaScriptの基礎知識 | jQuary・jQueryMobileの基礎知識 |
| Dreamweaver CC 2015の使い方・基本 | InDesign CCの使い方・基本 |
| AfterEffects CCの使い方・基本 | AfterEffects CC 2014の使い方・実践 |
| Premiere Pro CC 2014の使い方・基本 |
| Webの基本をマスターしている方 | | 棚橋弘季氏の直伝、ユーザー中心のWebサイト設計 | 益子貴寛氏が伝授するCSS実践テクニック |
| 矢野りんさんに学ぶ、”使える”デザイン基礎知識 | こもり氏のHTML+CSS基礎 | 平塚氏のマーケティング基礎 |
| 坂本氏のIA入門 | Webに関わるすべての人の「Webリテラシー」講座 | 神森勉氏に学ぶコーディング講座 |
| 森川眞行氏に学ぶ、大規模サイトの構築・運用マネジメント |
| 就職・転職・就活中の方へ | | 模擬面接セミナー(個別FB付) | エントリーシートブラッシュアップセミナー |
| 面接・職場で使えるビジネスマナー研修 | 職務経歴書添削セミナー |