Skip to main content
Participant
August 2, 2022
Answered

過去フォーラムに記載のあるスクリプトがAE2020で動作しない

  • August 2, 2022
  • 1 reply
  • 160 views

環境:Aftereffect2020

  :Windows10

 

下記質問で、各レイヤーの位置に対して数値を加算する処理の記載があるのですが、

こちら、最後の方にプロジェクトパネルからコンポ選択による一括処理に対応させた、

というものがあり、そちらが動作せず。

 

その一括処理へと変更の前に回答のあった単体処理に関しては動作する形です。

参照しているscriptが記載されているフォーラム 

 

 

scriptの知識が乏しいもので、どうしてAE2020で動かないのか見当もつきません。

インストールも終了した2020の質問で大変恐縮ですが、何卒対応方法のご教授を頂けると助かります。

This topic has been closed for replies.
Correct answer Mukaida
配列の記号が消えているのが原因です。
以前に投稿したスクリプトは、下記になるので動作すると思います。
var items = app.project.items;
var selectedComps = new Array(); 

for (var i = 1; i <= items.length; i++)
    if ((items[i] instanceof CompItem) && items[i].selected)
        selectedComps[selectedComps.length] = items[i];
        
for (var j = 0; j <= selectedComps.length-1; j++)    //コンポジション
{
for (var k = 1; k <= selectedComps[j].numLayers; k++) //レイヤー
     {
     var myLayer = selectedComps[j].layer(k);  
     var myProp = myLayer.property("Position");  
     var curVal;
if (myProp.numKeys > 0)
{
for (var m = 1; m <= myProp.numKeys; m++)
{
curVal = myProp.keyValue(m);
myProp.setValueAtKey(m,[curVal[0]+300,curVal[1]+0]);  // X: +300 Y: +0
}
}else
{
curVal = myProp.value;
myProp.setValue([curVal[0]+300,curVal[1]+0]);    // X: +300  Y: +0  }  
}
}
}

1 reply

MukaidaCommunity ExpertCorrect answer
Community Expert
August 5, 2022
配列の記号が消えているのが原因です。
以前に投稿したスクリプトは、下記になるので動作すると思います。
var items = app.project.items;
var selectedComps = new Array(); 

for (var i = 1; i <= items.length; i++)
    if ((items[i] instanceof CompItem) && items[i].selected)
        selectedComps[selectedComps.length] = items[i];
        
for (var j = 0; j <= selectedComps.length-1; j++)    //コンポジション
{
for (var k = 1; k <= selectedComps[j].numLayers; k++) //レイヤー
     {
     var myLayer = selectedComps[j].layer(k);  
     var myProp = myLayer.property("Position");  
     var curVal;
if (myProp.numKeys > 0)
{
for (var m = 1; m <= myProp.numKeys; m++)
{
curVal = myProp.keyValue(m);
myProp.setValueAtKey(m,[curVal[0]+300,curVal[1]+0]);  // X: +300 Y: +0
}
}else
{
curVal = myProp.value;
myProp.setValue([curVal[0]+300,curVal[1]+0]);    // X: +300  Y: +0  }  
}
}
}
Participant
August 8, 2022

作成者様からご回答いただき、本当にありがとうございます。

無事動作を確認する事が出来ました。

 

これで作業の時短が可能になりました、重ね重ね本当にありがとうございました。