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

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

現象の確認

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

エラーになるコード(2)
if (4 < time && time < 8){
  wiggle(80,10);
}
エクスプレッションで if 文を記述するとスクリプトエラーになってしまう:画像2

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

原因

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);
}
AuthorPortraitAlt
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。 最近は生成AIの画像生成の沼に沈んでいる。
作成日: 2022-01-30
Copyright © 1995–2025 iPentec all rights reserverd.