Get all of the layers in a timeline
By using JSFL, you can use this code to get a list of all of the layers in a timeline. This is returned as an array of named objects whose data is accessible like this:
var layers = getLayers(fl.getDocumentDOM().getTimeline()); layers[0].name
This will return the first layer’s name.
var getLayers = function(timeline){ var layers = []; for(var l in timeline.layers){ layers.push({ name:timeline.layers[l].name, layer:timeline.layers[l], index:l }); } return layers; };
Get all of the keyframes in a layer
By using JSFL, you can use this code to get a list of all of the Keyframes on a layer. This is returned as an array of named objects whose data is accessible like this:
var keyframes = getKeyframes(fl.getDocumentDOM().getTimeline().layers[0]); keyframes[0].index;
This will return the first keyframe’s index, allowing you to reference it later using layer.frames[index].
var getKeyframes = function(layer){ var keyframes = []; for(var f in layer.frames){ if (f==layer.frames[f].startFrame){ keyframes.push({ frame:layer.frames[f], index:f }); } } return keyframes; };
Get all of the instances in a keyframe
By using JSFL, you can use this code to get a list of all of the instances on a keyframe. This is returned as an array of named objects whose data is accessible like this:
var instances = getInstances(fl.getDocumentDOM().getTimeline().layers[0].frames[0]); instances[0].index;
This will return the first instance’s index, allowing you to reference it later using frame.instances[index].
var getInstances = function(keyframe){ var instances = []; for(var e in keyframe.elements){ if(keyframe.elements[e].elementType == 'instance'){ if(keyframe.elements[e].libraryItem.itemType != 'compiled clip'){ instances.push({ instance:keyframe.elements[e], index:e }); } } } return instances; };