エクスプレッションで if 文を記述するとスクリプトエラーになってしまう - After Effects

エクスプレッションで if 文を記述するとスクリプトエラーになってしまう現象と対処法を紹介します。

現象の確認

エクスプレッションで次のif文を記述するとスクリプトエラーになります。
エラーになるコード(1)
if (time < 2){
  wiggle(80,10);
}


エラーになるコード(2)
if (4 < time && time < 8){
  wiggle(80,10);
}


どちらの場合にも次のエラーが表示されます。
エラーメッセージ
このプロジェクトにはエクスプレッションエラーがあります。
コンポジション「(コンポジション名)」内の(レイヤー名)のプロパティの「(プロパティ名)」のn行目でのエラー。
未定義の値がエクスプレッションで使用されています(行列の添え字が範囲外である可能性があります)

原因

else文がないことが原因です。厳密には、エクスプレッション内での条件分岐により「何もしない」フローはエラーになります。 そのため以下のエクスプレッションのコードもエラーになります。
else文があってもエラーになるコード
if (4 < time && time < 8){
  wiggle(80,10);
}else{
}

対処法

else文を記述し、elseブロックにもエクスプレッションの値を設定するロジックを記述します。
以下のコードに変更すると、エラーが解消されます。
動作するコード(1)
if (4 < time && time < 8){
  wiggle(80,10);
}else{
  transform.position
}

動作するコード(2)
if (4 < time && time < 8){
  wiggle(80,10);
}else{
  wiggle(0,0);
}
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
最終更新日: 2022-01-30
作成日: 2022-01-30
iPentec all rights reserverd.