5.変数-variable-
一時預かり箱
- 変数は数字や文字を保存しておく場所のことで、コンピューターのメモリーに置かれた箱のようなものです。長い計算式や計算の結果、レイヤーの情報などいろいろなものをその箱に入れて保存します。必要なときは箱の名前を使って中の情報を取り出すことができるのです。この箱はコンピューターのメモリーに作られ保管されているので、ソフトを終了すれば消えてしまいます。変数は短いエクスプレッションでなければ必ず使うことになります。
変数(箱)の使い方
- 箱に名前をつけて値を入れるには次のように記述します。
変数名 = 値 ;
- 例えばこんな風に書きます。
east = thisComp.layer("平面1").rotation/ 2;
- 左辺の[east ]が変数です。なんの前触れも無くいきなり east と書いてかまいません。
- 変数宣言といって、JavaScriptでは基本的には var east; という書き方をしますが、 var を省略することもできます。
- 変数の名前は自由に決めることが出来ます。(詳しくはページ下)
- 算数でイコール(=)は右辺と左辺が等しいことを表しますが、エクスプレッションではイコールは右の値を左に渡すという意味の記号です。
- 変数名 ← 値 という感じです。
- 右の値を左の変数に渡すことを「代入する」といいます。
- その箱の中身を使う時は箱の名前だけを記述します。
thisLayer.rotation + east
- これは次の式と同じ意味になります。
- thisLayer.rotation + thisComp.layer("平面1").rotation / 2
変数を使ってみましょう。
- グリーンとオレンジの平面の中央にグレーが位置するエクスプレッションを考えてみます。
-
- それにはグリーン平面とオレンジ平面の位置を足して2で割ればいいですね。式にすると
グレーの位置=(グリーンの位置+オレンジの位置) ÷2
- 右辺をエクスプレッションに置き換えるとこうなります。
(thisComp.layer("green"). position + thisComp.layer("orange"). position)/2
- 長くてなんだかわかりにくいですね。ここで変数を使った方法に書き換えてみます。
green=thisComp.layer("green"). position;
orange=thisComp.layer("orange"). position;
(green + orange)/2;
- エクスプレッションが3行になりました。
- まず1行目で「おい、アフターエフェクト!箱に「green」ってラベルを貼って、グリーン・レイヤーの位置を入れておいてよ。」って命令しています。
- 2行目でも同様に変数 orange にオレンジ・レイヤーの位置を代入しています。
- 3行目で「ねえ、アフターエフェクト!「green」と「orange 」を足して2で割ってよ!」と気軽に命令すると、アフターエフェクトはまず其々の箱の中の情報を取り出します。
- 最初のgreen というのは1行目で保存した thisComp.layer("green"). position のことで、次の orange も同様に2行目の thisComp.layer("orange"). position ですね。次に取り出した2つの情報を足して2で割ります。結局最初に書いた長ったらしい式と同じことになるのです。
- 変数を使うと一番最初に立てた方針、つまり「グリーン平面とオレンジ平面の位置を足して2で割る」という考えをそのまま素直に記述することが出来るので、理解しやすいエクスプレッションを書くことができます。
- また、参照を何回も書かなければいけない場合でも、記述を簡潔にすることが出来ます。
変数の決まり
- 箱(変数)のラベル(名前)は自由につけることができます。
- 数学で使うようにxとかyでもかまいません。しかしそれでは変数にどんなものが入っているのかまったくわかりません。ですから短くてもわかり易い名前をつけるのがコツです。
- 変数はいくつでも作ることが出来ますが、同じ名前の変数を複数作ることは出来ません。
- 変数の中には1つのものしか入れることが出来ません。
- 変数には後から別のものを入れて中身を変更することができます。
- 前に入っていたものは捨てられてしまいます。
- 変数名には半角英数字のみ使用できます。残念ながら日本語は使用不可です。
- 例:「グリーン平面の位置」はNGです。
- 変数名を数字から始めることはできません。
- 例:「3.5frame」はNGです。
- その他「言語メニュー」にすでにある単語なども変数名には使えません。
詳しくは別項を見てください。
JavaScriptの変数