AEスクリプトを学ぶとき、AEのサイトだけでなくJavaScriptサイトも参考にすることが多いと思います。
JavaScriptサイトには「配列の足し算ってできないんですか?」という質問があって、「できません」と書かれていますね。実際“JavaScript”で実現するには、配列の要素を取り出してそれぞれ足し、また新たな配列に入れなければなりません。
しかし、AEスクリプトだとできるんですよねえ。
例えば、2つの位置情報を足したいときに
var a = [ 1 , 2 ] + [ 5 , 7 ];
と書くと、aの値はちゃんと[ 6 , 9 ]になってくれます。
AEスクリプトの配列演算の結果は以下になります。
演算 | 配列同士 | 配列と数値(or 数値と配列) |
---|---|---|
足し算&引き算 | ○(同じ番号の要素同士を計算) | ○(最初の要素と数値だけ計算) |
掛け算 | × | ○(配列の要素全てに数値を掛ける) |
割り算 | × | ○(左が配列の場合のみOK。要素全てを数値で割る) |
「なぜできるのか?」海外のサイトも含めて調べてみたんですが、それらしい記述は見当たらなかったです。AEスクリプト作業は位置情報の足し引きが非常に多いので、スクリプトスタッフができるように拡張したんでしょうかね?
エクスプレッション言語リファレンスの『Vector Math』の項目に、そっくりの処理内容のメソッドがあります。そこの記述『ベクトル演算関数(Vector Math)は~配列を数学上のベクトルとして扱います』とは「配列を四則演算できます」とほぼ同義ですね。昔見たときは「意味わかんねえ…」と思っていました。エクスプレッションとスクリプトはメソッド内容が共通していることも多々ありますし、もしかしたらスクリプトは内部的に四則演算をこれらのメソッドに変換するんですかね。
地味に便利なので筆者も多用しております。
*注意
PhotoshopなどAE以外のAdobeスクリプトだと配列の四則演算はできないです。例えば、
var a = [ 1 , 2 ] + [ 5 , 7 ];
と書いたとき、aの値は“1,25,7”という文字列になってしまいます。
かなり限定的な話ですが、例えばAE用に作ったスクリプトをイラレやフォトショ用に作り替える場合、そこの箇所全てを書き換えることになりますね。そうなるとかなり面倒ではありますねえ…。