I'm trying to write a script that does something after each item in the render queue gets rendered. I'm setting the onStatusChanged callback, but it only seems to be calling my function immediately after I set the callback, so that even though the status has not changed, the function gets called. From then on, the function never gets called again, even if I change the status to unqueued immediately after setting onStatusChanged. And it certainly doesn't get called when the status goes from queued to rendering or from rendering to done. Am I doing something wrong (I'm new to AE scripting)? Any help would be greatly appreciated. I'm on CS4 on a Mac 10.6.3. Code is below. Thank you.
- David
Code: Select all
function traverseRenderQueue()
{
var myProject = app.project;
var myRQ = myProject.renderQueue;
var i = 1;
for (i = 1; i<=myRQ.numItems;i++)
{
var currentItem = myRQ.item(i);
if (currentItem.status == RQItemStatus.QUEUED)
{
currentItem.onStatusChanged=statusChange(i);
}
}
myRQ.render();
alert("All Done");
}
function statusChange(index)
{
app.project.renderQueue.pauseRendering(true);
var currentItem = app.project.renderQueue.item(index);
alert("Status for "+currentItem.comp.name+" changed to: "+currentItem.status); //Only called immediately after setting onStatusChanged
if (currentItem.status == RQItemStatus.DONE)
{
alert("I got here"); //Never called
}
app.project.renderQueue.pauseRendering(false);
}