dA-tools.com

HOME > AfterFx > expression > 実践 > 記述の省略

記述の省略

オブジェクト参照は長くて面倒だし読みにくい!

  • ここまで見てきたように参照の記述はかなり長いものになってしまいます。そこでAfterFxでは記述を省略することができるようになっています。

Default Object

別のオブジェクトを参照しない限り、前の参照を省略できます。

  • つまりthis○○○は省略できます。‘thisLayer.opacity’の代わりに‘opacity’だけでOKです。住所で例えれば、「日本」と書かなくても国内郵便が届くようなものです。
  • もちろんデフォルトオブジェクト以外への参照はグローバルオブジェクトから始めなければなりません。Compの別レイヤーを参照する場合、レイヤーは別オブジェクトですから‘layer("平面 1")だけではNGです。thisComp.layer("平面 1") と書く必要があります。

デフォルト値

平面1のプロパティに記述した場合、以下のどれを使ってもエクスプレッションは同じ結果になります。

thisComp.layer("平面1").transform.position.valueAtTime(time)
thisComp.layer("平面1").transform.position
thisLayer.transform.position
transform.position
position

ver.7以前はtransformはサポートされていません。

代入して省略

記述の長い参照を変数に代入すると記述が楽になり、解りやすくなります。

  • 例えば"平面1"の00Frでの位置を何度も参照する必要があれば、それを次のように変数に代入しておきます。

firstPosition = thisComp.layer("平面1").position.valueAtTime(0)

  • このように参照先を変数に代入してしまうと、これ以降は firstPosition で参照できるようになります。

便利thisねえ

  • プロパティにthisComp,thisLayer,thisPropertyというものがあります。
  • このthisはエクスプレッションを書いているオブジェクト自身を指しています。
  • これを使うメリットは、エクスプレッションをコピーして複数ペーストしたり、レイヤーを複製した時に、参照先を書き直す必要がないということです。

例1:

  • エクスプレッションが書かれているレイヤーの名前を取得するときに、平面1ではこのようになります。

name = comp("camera").layer("平面1").name;

  • このレイヤーを複製したり、エクスプレッションを他のレイヤーにコピペしたりすると、常に コンポジション"camera"の”平面1”の名前を取得してしまいます。
  • ここでthisを使った記述に変更すると

name = thisLayer.name;

  • このエクスプレッションはどのレイヤーに書かれても、常に書かれているレイヤーの名前を取得することが出来ます。

例2:

  • 処理の重いエフェクトをまとめてON-OFF
  • 次のエクスプレッションをエフェクトに書くとヌル 1のチェックボックスで全てのエフェクトのON-OFFをコントロール出来ます。

sw = thisComp.layer("ヌル 1").effect("チェックボックス制御").param("チェックボックス");
thisProperty * sw

  • swは0か1を渡します。
  • エフェクトのどのパラメーターに書くかはそれぞれ考えて!