Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Is there a way to make Animate automatically do that ? (like a macro)

Contributor ,
Mar 09, 2018 Mar 09, 2018

I'm making animations with Adobe Animate and importing layers from Photoshop.

Sometimes I've got like 34 or 40 layers and I have to manually do that :

Capturer 04 - Streamable

Is there a way to make Animate automatically do that ? (putting each layer after the previous one ?)

Thank you for your help

2.3K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Mar 10, 2018 Mar 10, 2018

Hi.

 

Here is a script that does what you need.

 

Probably k will give you a most efficient way of doing this, but, for now, I think it can help you.

 

Feel free to improve it in any way desired.

 

UPDATE (03/23/2023):

I didn't review the code. Just grabbed it from another folder I have in Google Drive.

var defaultValue = "3";
var space = prompt("Type the pyramid edge width.", defaultValue);
var doc = fl.getDocumentDOM();
var timeline = fl.getDocumentDOM().getTimeline();
var selectedLayers = tim
...
Translate
Community Expert ,
Mar 09, 2018 Mar 09, 2018

yes.  you can use jsfl to automate that task.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Mar 09, 2018 Mar 09, 2018

Ok.. Do you have any tutorial how to do that ?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Mar 09, 2018 Mar 09, 2018

i haven't made a tutorial but you could search for one using google:  jsfl tutorial

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Mar 10, 2018 Mar 10, 2018

Thank you. I've just read this tuto and understood how this is working.

But, as I'm not good at all at Javascript language, do you know how can I tell, in javascript, to add 3 frames to each layers and to put the next layer after the previous one (like in my video) ?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Mar 10, 2018 Mar 10, 2018

Hi.

 

Here is a script that does what you need.

 

Probably k will give you a most efficient way of doing this, but, for now, I think it can help you.

 

Feel free to improve it in any way desired.

 

UPDATE (03/23/2023):

I didn't review the code. Just grabbed it from another folder I have in Google Drive.

var defaultValue = "3";
var space = prompt("Type the pyramid edge width.", defaultValue);
var doc = fl.getDocumentDOM();
var timeline = fl.getDocumentDOM().getTimeline();
var selectedLayers = timeline.getSelectedLayers();
var count;
var increment;

function start()
{
	if (!doc || !selectedLayers || selectedLayers.length == 1 || space == null)
		return;
	else
	{
		space = space.replace(/\s/g,'');
		
		if (isNaN(parseFloat(space)) || space <= 0)
			return;
		else
			count = Number(space);
		
		increment = count;
	}
	
	for (var i = selectedLayers.length - 1; i >= 0; i--)
	{	
		timeline.setSelectedLayers(selectedLayers[i], true);		
		timeline.insertFrames(count, false, 0);		
		timeline.insertKeyframe(count - (increment - 1));
		count += increment;
	}
}

start();

-----------------------------------------------------------------------------------------------------------------------

 

JSFL download: layers_pyramid.jsfl - Google Drive

 

Usage:

Select the layers you want, type in the value of the pyramid's edges or leave the default and press 'OK'.

 

Code (for reference):

var defaultValue = "3";

var space = prompt("Type the pyramid edge width.", defaultValue);

var doc = fl.getDocumentDOM();

var timeline = fl.getDocumentDOM().getTimeline();

var selectedLayers = timeline.getSelectedLayers();

var count;

var increment;

 

function start()

{

    if (!doc || !selectedLayers || selectedLayers.length == 1 || space == null)

        return;

    else

    {

        space = space.replace(/\s/g,'');

       

        if (isNaN(parseFloat(space)) || space <= 0)

            return;

        else

            count = Number(space);

       

        increment = count;

    }

   

    for (var i = selectedLayers.length - 1; i >= 0; i--)

    {   

        timeline.setSelectedLayers(selectedLayers, true);       

        timeline.insertFrames(count, false, 0);       

        timeline.insertKeyframe(count - (increment - 1));

        count += increment;

    }   

}

 

start();

 

Demonstration:

jsfl_layers_pyramid.gif

 

I hope it helps.

 

Regards,

JC

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Mar 10, 2018 Mar 10, 2018

Super thanks for this answer and the code! Unfortunately, I've just tested it but it doesn't seems to work (nothing is happening) :

Capturer 01 - Streamable

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Mar 10, 2018 Mar 10, 2018

Great!

You have to select the layers first.

Sorry, because I edited my comment and you probably didn't see the update.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Mar 10, 2018 Mar 10, 2018

Here's what's happening when I'm selecting all the layers :

Capturer 03 - Streamable

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Mar 10, 2018 Mar 10, 2018

Sorry about the inconvenience.

I've updated the script. Please try again.

Now you can apply it to any number of layers.

The only thing that it won't do right now is to remove the contents of the first frames. It seems trivial but it turns out that it isn't.

As soon as I find a solution, I'll get back to you.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Mar 10, 2018 Mar 10, 2018

Little demonstration:

jsfl_layers_pyramid.gif

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Mar 10, 2018 Mar 10, 2018

GREAT !!! Thank you very much for this ! Awesome !

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Mar 28, 2023 Mar 28, 2023

can you send it again

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Mar 28, 2023 Mar 28, 2023

Hi.

 

You can copy the code from the accepted answer (in the comment body itself).

Please let me know if there's some issue.

 

Regards,

JC

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Mar 28, 2023 Mar 28, 2023

line 51,A javascript error occurred

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Mar 28, 2023 Mar 28, 2023
LATEST

Thanks for pointing that out.

 

This should be the correct code:

var defaultValue = "3";
var space = prompt("Type the pyramid edge width.", defaultValue);
var doc = fl.getDocumentDOM();
var timeline = fl.getDocumentDOM().getTimeline();
var selectedLayers = timeline.getSelectedLayers();
var count;
var increment;

function start()
{
	if (!doc || !selectedLayers || selectedLayers.length == 1 || space == null)
		return;
	else
	{
		space = space.replace(/\s/g,'');
		
		if (isNaN(parseFloat(space)) || space <= 0)
			return;
		else
			count = Number(space);
		
		increment = count;
	}
	
	for (var i = selectedLayers.length - 1; i >= 0; i--)
	{	
		timeline.setSelectedLayers(selectedLayers[i], true);		
		timeline.insertFrames(count, false, 0);		
		timeline.insertKeyframe(count - (increment - 1));
		count += increment;
	}
}

start();
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Mar 10, 2018 Mar 10, 2018

Something is happening when I'm selecting only the 4 first layers... :

Capturer 02 - Streamable

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines