[エクスプレッション]レイヤーのアンカーポイントを常に中央に配置する

アンカーポイントを中央に固定

AEは環境設定にシェイプに関しては中央配置にするという機能がありますが、残念ながらあればまだシェイプのみの対応になっています。こんな感じでずれ。

テキストなどのレイヤーは対象外なのでずっと中央に固定したい時のためのエクスプレッションにsourceRectAtTime()があります。

今回の数式

a = thisLayer;
b = a.sourceRectAtTime();
[(b.width/2)+b.left,(b.height/2)+b.top]

わかりにくいですね。。。わかります。分解しましょう。。。

sourceRectAtTime()

指定したレイヤーの矩形(長方形)の数値を持ってこれます。レイヤーにあるバウンディングボックスの数値と思っていいと思います。

このどの位置の数値を持って来るかですが4種類用意されています。

  • top = レイヤーの上面の真ん中の数値
  • left = レイヤーの左側面の真ん中の数値
  • width = レイヤー横幅
  • height = レイヤーの高さ

図形でいうとこんな感じです

式の理解の仕方

真ん中のポイントを求める時は縦と横で分解します

  • 横の中心 = leftの座標からwidthの半分の数値分、進んだところ
  • 縦の中心 = topの座標からheightの半分の数値分、進んだところ

となります。

a = thisLayer;

長いのでthisLayerをaに省略しています。

b = a.sourceRectAtTime();

sourceRectAtTime()も長ったらしいのbに入れます。このままだとどのレイヤーか指定がないので頭にa(thisLayer)をドットでつなげています。

[(b.width/2)+b.left,(b.height/2)+b.top]

前半の(b.width/2)+b.leftがx軸、後半の(b.height/2)+b.topがy軸の数値です。さっきの式の理解の仕方を参照してみてください。そのまんまになってますね。

完成

これでレイヤーの真ん中にアンカーポイントが固定されました。やれやれ。topとかleftとかいまいち説明がないのがわかりにくすぎて詰まりました。笑。

エクスプレッションを使って快適なAE生活を^^

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です