After Effects CC 2015.0 (13.6)
公式のブログで公開されている「After Effects CC 2015.0 (13.6): what’s new and changed in this update」より、スクリプティングに関連する部分のみを抜粋して抄訳。
スクリプティングによるテキストベースラインへのアクセス
After Effects CC 2015 (13.6)のアップデートで、スクリプトを使用してテキストレイヤーのテキストベースラインの座標(x,y)を読み取ることができるようになりました。
TextDocument objectの新しいsourceText.value.baselineLocsアトリビュートは、浮動少数の配列という形でテキストの各行のベースラインx,y座標値を返します。
パラグラフ(段落)テキストボックスでのテキストの自動折り返しは、複数行として扱われます。
返される浮動少数の配列は
[ line0.start_x, line0.start_y, line0.end_x, line0.end_y, line1.start_x, line1.start_y, line1.end_x, line1.end_y … lineN-1.start_x, lineN-1.start_y, lineN-1.end_x, lineN-1.end_y ]
という書式になります。
注意: もし行に何も文字が含まれていない場合、startとendのx,yの座標値は浮動少数の最大値である「3.402823466e+38F」を返します。
ランダム数を生成するための新しいメソッド(関数)
ランダムな数値を生成するための新しいスクリプティング関数「generateRandomNumber()」が追加されました。
今後はプロジェクト内の値設定としてランダムな数値を生成したい場合、従来のMath.randomの代わりに、この新しい関数を使用することが推奨されます。(例: setValueなど)
After Effects CC 2015 (13.5.x)では、マルチCPUスレッドの並列処理によって、Math.randomを使用した際にランダムな数値を返さないという問題がありましたが、この新しいメソッドはそれを解決しています。
generateRandomNumber methodの使用例:
// change the position X of all layers with random number
// 全レイヤーのX位置をランダムに変更する
var myComp = app.project.activeItem;
var x = 0;
for(var i = 1; i <= myComp.numLayers; i++){
// If you use Math.random(), this does not work
// x = 400*(Math.random()) – 200;
// use new generateRandomNumber() instead
// 下記のようにMath.random()を使用すると、これは動作しません。
// x = 400*(Math.random()) – 200;
// 代わりにgenerateRandomNumber()を使用しています。
x = 400*(generateRandomNumber()) – 200;
currentPos = myComp.layer(i).property(“Position”).value;
myComp.layer(i).property(“Position”).setValue([currentPos[0]+x,currentPos[1]]);
}