平面レイヤーかどうか判断する

コンポジションにある状態では、平面レイヤーや配置した素材など、フッテージウィンドウから配置されたものはすべて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;

}