《if文!switch文!》条件によって処理を分岐させる方法

AfterEffectsで時間を指定して処理を変えたり、座標を指定して処理を変えるなど、状況に応じて処理を切り替えたい場合があると思います。

その場合は、if文やswitch文を使うことで簡単に実現できますので、具体的な方法をご紹介します。

条件分岐する方法

if文

if文は、指定した条件に一致する場合とそうでない場合で処理を分岐させます。

具体的には以下のように書きます。

if文の使い方
※ 「time」は再生開始位置からの秒数を取得できます

上記の場合、最初の10秒と、その後で違う処理をします。

ポイントは条件式で、条件式の書き方をいくつか紹介します。

time == 10 ・・・ timeが10の場合
time > 10 ・・・ timeが10より大きい場合
time >= 10 ・・・ timeが10以上の場合
time < 10 ・・・ timeが10より小さい場合
time <= 10 ・・・ timeが10以下の場合
(0 <= time) && (time <= 10)・・・timeが0以上かつ10以下の場合
(time <= 10) || (20 <= time)・・・timeが10以下または20以上の場合
※ 上記の比較演算子、論理演算子など、詳しくはこちらをご覧ください。

それでは、実際に値を入れて動かしてみます。

※ ここでは「回転」などの配列ではないプロパティのエクスプレッションに記載する想定で説明していきます。
var nValue = 0;
if(time < 10){
  /* 10秒未満の場合 */
  nValue = 100;
}
else{
  /* 10秒以上の場合 */
  nValue = 200;
}
nValue;

上記の例の場合は、最初の10秒は100を、それ以降は200が設定されます。

また、もっと細かく条件を分けたい場合は、「else if」を加えます。

var nValue = 0;
if(time < 10){
  /* 10秒未満の場合 */
  nValue = 100;
}
else if( (10 <= time) && (time < 20) ){
  /* 10秒以上、20秒未満の場合 */
  nValue = 200;
}
else{
  /* 20秒以上の場合 */
  nValue = 300;
}
nValue;

上記の場合は、最初の10秒は「100」、その後20秒まで「200」、20秒以降は「300」が設定されます。

※ if文の詳しい仕様はこちらをご覧ください。

switch文

switch文は、指定した変数の値によって、処理を分岐させます。

具体的には以下のように書きます。

switch文の使い方

上記の場合、式の「Math.floor(time)」は、timeの小数点以下を切り捨てるという処理です。そのため、開始~1秒になるまで0になるので、その間は「case 0」の処理が実行されます。1秒を過ぎると式が1になるので、それ以降は「default」の処理が実行されます。

これに少し条件を増やして、実際に値を入れて動かしてみます。

var nValue = 0;
switch(Math.floor(time)){
  case 0:
    /* 0~1秒に実行する処理 */
    nValue = 100;
    break;
  case 1:
    /* 1~2秒に実行する処理 */
    nValue = 200;
    break;
  case 2:
    /* 2~3秒に実行する処理 */
    nValue = 300;
    break;
  default:
    /*それ以外(3秒以降)に実行する処理 */
    nValue = 400;
    break;
}
nValue;

上記の場合、1秒毎に「100」、「200」、「300」が設定され、3秒以降は「400」が設定されます。

※ switch文の詳しい仕様はこちらをご覧ください。

使用例

その他の使用例も作ってみましたので、必要に応じてご活用ください。

if文

1秒置きに処理を切り替える

var nRemainder = Math.floor(time)%2;
if(nRemainder == 0){
  /* 偶数秒の場合 */
}
else{
  /* 奇数秒の場合 */
}

switch文

コンポジション内のレイヤー番号で処理を切り替える

var nLayerIndex = thisLayer.index;
switch(nLayerIndex){
  case 1:
    /* レイヤー番号が1の場合 */
    break;
  case 2:
    /* レイヤー番号が2の場合 */
    break;
  case 3:
    /* レイヤー番号が3の場合 */
    break;
  case 4:
    /* レイヤー番号が4の場合 */
    break;
  case 5:
    /* レイヤー番号が5の場合 */
    break;
  default:
    /*それ以外の場合 */
    break;
}
※ 上記はレイヤー番号1~5までしか書いていませんが、もちろん増やすこともできます。また、「switch(nLayerIndex%10)」とすれば、1の位で処理を分けることもできます。

まとめ

今回ご紹介した条件分岐の条件式には、位置や、不透明度など、任意の情報を指定できます。

例えば、レイヤーの位置が中央より左の時と右の時で色を変えるなど、可能性は無限大です。

if文やswitch文を使うと、キーフレームだけでは実現できないような高度な操作が可能になりますのでお試しください。

条件によって処理を分岐させる方法
最新情報をチェックしよう!
>Aeをもっと便利に。「COLOR CODE - AE」

Aeをもっと便利に。「COLOR CODE - AE」

AfterEffectsをもっと便利に使う為のコンテンツを制作・発信しているブログです。YouTube「COLOR CODE - AE チャンネル」では、エフェクト、エクスプレッション、プリセット、プラグインのリファレンス動画を公開しています。チャンネル登録もお待ちしています!

CTR IMG