スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
AE Script 勉強中です。
普段あまり AE 自体をさわる方じゃないので利用価値があるかは疑問ですが
単純に興味もあるので勉強しています。

先日友人から AfterEffects の AE Layer Switch Pane にあるプロパティは
スクリプトで操作できるのか、と言われ

レイヤーのプロパティに普通にあるんじゃないかと思い
調べてみると予想通り普通に見つかりました。

例えば一番上のコンポジションの一番上のアイテムの Shy を調べるなら

app.project.item(1).layer(1).shy

これだけです。

しかしこのプロパティ名を変数から受けとるような
汎用的な関数にしてみようと試みたところ、うまくいきません。
例えば

var opt = "shy";
app.project.item(1).layer(1).opt

このようにしても "opt" という名前のプロパティを参照しようとするわけなので
考えてみればできるわけがありません。

var opt = "shy"
app.project.item(1).layer(1).property(opt)

これでも駄目でした。

なんとか調べぬいたところ [ ] を使えばいけることがわかったので
最終的にはこのような形のクラスになりました。

function layerOptions()
{
var proj = app.project;
var act = proj.activeItem;

this.get = function(lyr, opt)
{
return act.layer(lyr)[opt];
}
this.set = function(lyr, opt, val)
{
return act.layer(lyr)[opt] = val;
}
}

var layerOptions = new layerOptions();
alert(layerOptions.get("Black Solid 1", "shy"))


要するに連想配列ということなんでしょうか?
どうしてこうなるのかいまいち分かりません。


もう既にいくつかコードを書いてツールを作ったりもしていますが

どうして selection やselectedLayers は インデックス 0 から格納されるのに
items や layers はインデックス 1 から格納されるのか、など

理由がわからなくてもコードは書けるのですが
なんだかまだモヤモヤがあるまま続けていることがいくつかあります。

もっと勉強が必要のようです。


コメント
管理者のみ閲覧可能にする
Profile
HN らい

都内某社テクニカルディレクター
都内某専門学校講師
都内某企業講師
元中国某社S3Dスーパーバイザー
Contact
(ENGLISH OK. 可以用中文。)
Categories
Archives
RSS Link
QR Code