Skip to content

Instantly share code, notes, and snippets.

@sansumbrella
Created February 9, 2011 00:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sansumbrella/817650 to your computer and use it in GitHub Desktop.
Save sansumbrella/817650 to your computer and use it in GitHub Desktop.
Flash animation export script annihilates all non-essential frames
/**
AnnihilateTime.jsfl
Pre-processing script for exporting animation keyframes
Use before exporting an image sequence
Duplicates your keyframes to new layers for export
Original layers become guides so they aren't exported
David Wicks, http://sansumbrella.com/
*/
// Set to false to prevent export
var doExport = true;
removeEmptyFrames = function( timeline, layerName )
{
var layerIndex = timeline.findLayerIndex(layerName);
timeline.currentLayer = layerIndex;
var frames = timeline.layers[layerIndex].frames;
var i = frames.length;
while( i-- )
{
if( i != frames[i].startFrame )
{ //if not a keyframe
timeline.removeFrames( i, i );
}
}
};
dupeLayerAndMakeGuide = function( timeline, layerIndex )
{
timeline.currentLayer = layerIndex;
timeline.layers[layerIndex].layerType = "guide";
timeline.copyFrames( 0, timeline.layers[layerIndex].frameCount );
var layerName = timeline.layers[layerIndex].name + " Compressed";
timeline.addNewLayer( layerName );
timeline.pasteFrames( 0 );
timeline.layers[timeline.currentLayer].layerType = "normal";
return layerName;
};
// run our functions
var timeline = fl.getDocumentDOM().getTimeline();
var numLayers = timeline.layers.length;
var createdLayers = 0; // since new layers are shifted into the array
for( var i = 0; i < numLayers; i++ )
{
if( timeline.layers[i].visible == true && timeline.layers[i].layerType == "normal")
{ // only collapse visible, non-guide layers
var layerName = dupeLayerAndMakeGuide( timeline, i + createdLayers );
removeEmptyFrames( timeline, layerName );
createdLayers++;
}
}
if( doExport )
fl.getDocumentDOM().exportPNG();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment