Looking for JSAPI reference for making extensions
Copy link to clipboard
Copied
Hi All,
Been looking around for a while now but can't seem to find any current documentation on how to create extensions for Adobe animate. Only think I could find was a DPF from way back in 2013 but surely a lot of things have been updated by now. Spent a few hours googling and searching but can't find anything.
In a nutshell, I juad want to make a simple UI panel for Animate with commonly used things I do in my workflow. I know javascript reasonably well but just looking for a reference on how to make the UI (XML?) panels and then tie it into JSFL code.
Thanks
Copy link to clipboard
Copied
Hi,
Try to find this book:
Extending Flash MX 2004: Complete Guide and Reference to JavaScript Flash
There is a chapter, dedicated to XUL dialogues: Chapter 5: XML to UI
If you have any specific questions, I think I can help you.
Member of Flanimate Power Tools team - extensions for character animation
Copy link to clipboard
Copied
I have the PDF from 2013 you are referring to, as far as I know that was the last time documentation for the JSFL language was made. I've made several extensions for Animate by referencing it, so for the most part it is still valid, and may actually be your only source of information.
Copy link to clipboard
Copied
Just to add to what Vlad and Chris have said, here is a document with some info about the newer features: Animate2019-NewfeaturesAPIs.pdf
We have found that not everything works as expected. Will have to wait and see what will be fixed in AnCC 20.0
Member of the Flanimate Power Tools team - extensions for character animation
Copy link to clipboard
Copied
Hi.
Just wanna to point out that you can create the UI of your panels with AS3 or HTML5 documents.
But if you really want do build a XUL based extension, I have one here with the code available:
https://community.adobe.com/t5/Animate/Exporting-Selected-Scene-as-Video/td-p/9254446
Anyway, the official reference for Animate extensions these days is this one:
https://www.adobe.io/apis/creativecloud/animate.html
Getting started with HTML5 extensions: https://github.com/Adobe-CEP/Getting-Started-guides.
Cookbook for HTML5 extensions: here.
Regards,
JC
Copy link to clipboard
Copied
Thanks heaps guys for the great resources all.
@ Vladin_M__Mitov - still trying to track down that book. But it's fairly pricey for how old it is.
@n__tillchef - thanks for that link too. The layer depth was something that I was looking for.
@jo - I didn't know you could create panels with HTML, would deifnintely prefer to go down that route if thats the more standardized way. I'm been through to that page you linked but couldn't find much into on making UI's with HTML, Don't suppose you have any examples?
Will have a look at your XUL for now too.
Side note for anyone that can help. I've writting a small JSFL script to basically help reorder a lot of movieclips on the stage. For a simple example. Say I sift and click select 5 different movieclips on the stage and then run this script. It will prompt the user to enter a prefix and then starting number. So it could be mc1, mc2, mc3, mc4, mc5. And it should order them in the order I clicked on the clips.
For the most part it works, example sometimes when I have multiple clips on the same layer (as I'm script animating, so they dont need to be on seperate layers) the ordering will go out of order even though I selected them in the correct order. I think this has something to do with the zdepth of each movieclip. Wondering if there was a programitc way to get around this bug. here is the script too.
var doc = fl.getDocumentDOM();
var mcseq = doc.xmlPanel(fl.configURI+"Commands/MC Sequencer.xml");
if (mcseq.dismiss == "accept") {
var mcPrefix = mcseq.mcPrefix;
var startNum = Number(mcseq.startNum);
if (mcPrefix == null || mcPrefix == undefined) {
alert("Error: Invalid parameter.\nPlease select at least 2 movieclips");
} else {
var selection = doc.selection;
selection.reverse();
for (var i = 0; i < selection.length; i++) {
var mc = selection[i];
mc.name = ""+mcPrefix+""+startNum;
fl.trace(mc.name + " "+mc.depth+ " " +mc.layer.name);
startNum++;
}
}
}
Copy link to clipboard
Copied
Hi again.
I've updated my previous comment with another reference to get you started.
Copy link to clipboard
Copied
Absolutely brilliant JoãoCésar - thanks heaps for that

