Skip to main content
Known Participant
November 8, 2023
Answered

Delete empty layers in Animate?

  • November 8, 2023
  • 2 replies
  • 640 views

Hi there!

I'm sure this topic go through many apps, not only Animate.

Many time I receive layouts with many empty layers and of course I delete them, but there also are inbetween some non empty layers, so I have to select one by one in order to delete them.

So, is there a way to delete empty layers automatically in Animate?

Thanks in advance!

    This topic has been closed for replies.
    Correct answer JoãoCésar17023019

    This one will delete the selected layers in the current timeline:

    var doc = fl.getDocumentDOM();
    var timeline = doc.getTimeline();
    var layers = timeline.layers;
    var selectedLayers = timeline.getSelectedLayers().reverse();
    
    selectedLayers.forEach(function(selectedLayerIndex)
    {
    	var isEmpty = true;
    	var layer = layers[selectedLayerIndex];
    	
    	layer.frames.some(function(frame, index)
    	{
    		if (!frame.isEmpty)
    		{
    			isEmpty = false;
    			return true;
    		}
    	});
    	
    	if (isEmpty)
    		timeline.deleteLayer(selectedLayerIndex);		
    });

     

    This one will delete all empty layers in the current timeline:

    var doc = fl.getDocumentDOM();
    var timeline = doc.getTimeline();
    var layers = timeline.layers.reverse();
    var total = layers.length;
    var count = 0;
    var deleted = 0;
    
    layers.forEach(function(layer)
    {
    	count++;
    	
    	if (layer.layerType !== "folder")
    	{
    		var isEmpty = true;
    	
    		layer.frames.some(function(frame)
    		{
    			if (!frame.isEmpty)
    			{
    				isEmpty = false;
    				return true;
    			}
    		});
    		
    		if (isEmpty)
    		{
    			timeline.deleteLayer(total - count);
    			deleted++;
    		}			
    	}			
    });
    
    fl.trace(deleted + " of " + layers.length + " layer(s) deleted.");

     

    Regards,

    JC

    2 replies

    JoãoCésar17023019
    Community Expert
    Community Expert
    November 8, 2023

    Hi.

     

    This JSFL script will delete all empty layers in the whole document. Make sure to save your file first and/or to create a backup copy.

    https://github.com/joao-cesar/adobe/tree/master/animate%20cc/jsfl/remove_all_empty_layers

     

    Just download it and double-click on it to run.

     

    Regards,

    JC

    JoãoCésar17023019
    Community Expert
    JoãoCésar17023019Community ExpertCorrect answer
    Community Expert
    November 8, 2023

    This one will delete the selected layers in the current timeline:

    var doc = fl.getDocumentDOM();
    var timeline = doc.getTimeline();
    var layers = timeline.layers;
    var selectedLayers = timeline.getSelectedLayers().reverse();
    
    selectedLayers.forEach(function(selectedLayerIndex)
    {
    	var isEmpty = true;
    	var layer = layers[selectedLayerIndex];
    	
    	layer.frames.some(function(frame, index)
    	{
    		if (!frame.isEmpty)
    		{
    			isEmpty = false;
    			return true;
    		}
    	});
    	
    	if (isEmpty)
    		timeline.deleteLayer(selectedLayerIndex);		
    });

     

    This one will delete all empty layers in the current timeline:

    var doc = fl.getDocumentDOM();
    var timeline = doc.getTimeline();
    var layers = timeline.layers.reverse();
    var total = layers.length;
    var count = 0;
    var deleted = 0;
    
    layers.forEach(function(layer)
    {
    	count++;
    	
    	if (layer.layerType !== "folder")
    	{
    		var isEmpty = true;
    	
    		layer.frames.some(function(frame)
    		{
    			if (!frame.isEmpty)
    			{
    				isEmpty = false;
    				return true;
    			}
    		});
    		
    		if (isEmpty)
    		{
    			timeline.deleteLayer(total - count);
    			deleted++;
    		}			
    	}			
    });
    
    fl.trace(deleted + " of " + layers.length + " layer(s) deleted.");

     

    Regards,

    JC

    Known Participant
    November 8, 2023

    Wow! That worked perfectly!

    Many thanks, dude! ❤️

    kglad
    Community Expert
    Community Expert
    November 8, 2023

    you could use jsfl to do that.