平面レイヤーかどうか判断する
コンポジションにある状態では、平面レイヤーや配置した素材など、フッテージウィンドウから配置されたものはすべてAVLayerというものになっている
なので配置されたAVLayerから実際にフッテージウィンドウにあるものを参照するためにsourceプロパティがあるのでそれをつかう
var comp = app.project.activeItem;
comp.layer(1); //[object AVLayer]
comp.layer(1).source; //フッテージウィンドウにある素材 [object FootageItem]
ここからさらにmainSourceプロパティを使うとフッテージの詳細にたどり着ける。
平面レイヤーの場合、このインスタンスがSolidSourceオブジェクトなのでinstanceofで平面かどうかがわかる
comp.layer(1).source.mainSource instanceof SolidSource
この場合だと調整レイヤーやヌルも同じSolidSourceなので一緒になってしまうので
adjustmentLayerプロパティとnullLayerプロパティをチェックする必要があるが、この2つのプロパティがないレイヤーもあるので
まずはAVLayerであるかどうかが先。
レイヤーのインスタンスがAVLayerであり、
AVLayer時のadjustmentLayerプロパティとnullLayerプロパティがfalseであり
AVLayerのsourceのmainSourceがSolidSourceのインスタンスであるという条件に当てはまる物が平面レイヤーとなる
ということで関数化するとこのようになる
function isSolidLayer(theLayer){
if(theLayer instanceof AVLayer){
if(theLayer.adjustmentLayer == false && theLayer.nullLayer == false && theLayer.source.mainSource instanceof SolidSource){
return true;
}
}
return false;
}