AEのエクスプレッションはスクリプトと同様 ExtendScript を使用していますが、スクリプトの機能を制限しつつエクスプレッションとして扱いやすいようにカスタマイズされたものとなっています。
例えば、割りと使い道のある propertyDepth
のような属性が Property オブジェクトから削除されてるかと思えば、 $.getenv('GOPATH')
のように環境変数を取得するものが残ってたりします。
それ以外に面白いのがカラーピッカーです。スクリプトで色指定する際に重宝する $.colorPicker()
ですが、エクスプレッションでも使用できます。とりあえず以下のようなエクスプレッションを組んでみました(出来るだけ短いコンポ、レイヤーで試してください)。
function rgbToHex( rgb ) {
rgb = clamp( rgb, [ 0, 0, 0, 0 ], [ 1, 1, 1, 1 ] );
var r = ~~( 255 * rgb[ 0 ] ) << 16,
g = ~~( 255 * rgb[ 1 ] ) << 8,
b = ~~( 255 * rgb[ 2 ] );
return r | g | b;
}
function hexToRgb( hex ) {
var r = ( hex >> 16 ) & 255,
g = ( hex >> 8 ) & 255,
b = hex & 255;
return [ r / 255, g / 255, b / 255, 1 ];
}
var hex = $.colorPicker( rgbToHex( value ) );
if( hex ) {
hexToRgb( hex );
} else {
[ 0, 0, 0, 0 ];
}
— かれをばな@3日目R-18b (@kareobana) 2016年12月18日
入力してエクスプレッションを有効化すると、エクスプレッションが評価されカラーピッカーが呼ばれます。最初に、適用したレイヤーの有効フレームの分だけ評価されるので閉じても閉じても何度も出てきます。したがって下手に長いレイヤーで実行すると痛い目にあいます。
プロジェクト読み込み時に一回だけ評価されるだけなら、今日は運勢的にこの色を背景にするか、みたいな使い方も可能なわけですが、何せやたらと再評価されてそのたびにカラーピッカーが出て来るので今のところちょっと使いみちが思いつかないです。
おわり。