This article guides the plug-in developers on how to create Animate plug-ins to support custom platforms using Animate 2015. If you are using Animate CC 2014.1 (October 2014 update) or CC 2014.2 (February 2015 update), see a previous versions of the document:
To build a custom platform support plug-in, developers must download the Custom Platform Support Development Kit from the following location:
Download a sample plug-in from the following location and use it as a reference for building a custom support platform support plug-in:
A plug-in consists of the following elements:
- DocType adds a new document type for the custom platform in Animate and controls the authoring features.
- Publisher allows configuration of the publish settings and publishing the document to the custom platform.
For an overview of the Custom Platform Support feature, see Custom Platform Support.
New in Animate CC 2015:
- Ability to query the type of a library symbol: In case of symbols, ILibraryItem::GetProperties() will have an additional entry with the key as kLibProp_SymbolType_DictKey. The value of key can be kLibProp_SymbolType_Button, kLibProp_SymbolType_MovieClip, or kLibProp_SymbolType_Graphic.
- Ability to distinguish between button and MovieClip: Until the previous release, the button instances were treated as MovieClips by both the DOM and the IFrameCommandGenerator service. Starting with Animate CC 2015, an interface has been added to support button instances. If the IMovieClip instance also implements the IButton interface, then it is treated as a button instance. The four states of a button namely, Up, Over, Down, and Hit are always mapped to the frames 0, 1, 2, and 3 respectively. See the file IButton.h to know more about the button instance.
- New API to get the bounds of IClassicText objects: The AddClassicText function in ITimelineBuilder interface now returns an object of CLASSIC_TEXT_INFO_2 (instead of the old CLASSIC_TEXT_INFO), which contains a new field "bounds" representing the bounds of the IClassicText object.
- The sample plug-in has been modified to reuse the bitmaps used for shape fills.
- Mongoose web server has been integrated to the sample plug-in.
Note: The new IK bone tool available in Animate CC 2015 release is disabled in Custom Platform document types. Animate converts the IK content to frame-by-frame animation when you paste it into a custom platform document.
February 2015 update: Support for “masks” in IFrameCommandGenerator service--This release supports masks in the IFrameCommandGenerator service. The new interface ITimelineBuilder2 that is inherited from the existing ITimelineBuilder interface contains the functions that the plugin has to implement to make this feature work. See the Custom Platform Support API documentation to know more about the new ITimelineBuilder2 interface.
You can develop a custom platform support plug-in using one of the following methods:
- Create a plug-in using the APIs in the custom platform support development kit.
- Customize the settings of the sample plug-in included in the development kit to suit your requirements.
Custom Platform Support plug-ins are packaged as .zxp files that can be installed with Animate. You can host the plug-in on the Adobe Add-ons page for users to download and install using the Creative Cloud application or distribute the plug-ins as .zxp packages to install them using Adobe Extension Manager.
A developer needs the following software to build a plug-in using the custom platform support development kit:
The custom platform support development kit contains the following elements:
- FCM (Flash Component Model): The header files contained in the development kit define a framework called FCM, which is responsible for plug-in management.
- DocType: This contains a set of interfaces that helps you to add a new document type to the Animate start page and allows you to enable or disable features for the custom document type.
- DOM (Document Object Model): This contains a set of interfaces that helps you to access the contents of the animate document in the form of a DOM.
- Publisher: This contains a set of interfaces that provides hooks to the publish workflows.
For complete information about the APIs in the custom platform support and examples of how to use them to build your plug-in, see Custom Platform Support API Reference.
You can create a custom platform support plug-in as follows:
- Download the Custom Platform Support Development Kit.
- Extract the contents of the kit to your computer.
- Open a new project in VisualStudio or Xcode and include the header files in the development kit to your software development project. To quick-start the creation of your custom platform support plug-in, you can use the following sample plug-in available under the SampleCreateJSPlatform directory as the base code for your plug-in project.
- Make necessary changes for your target platform.
- Compile the code to generate a plug-in (.dll or .plug-in).
For example, the SampleCreateJS plug-in files are at SampleCreateJSPlatform\Plugin\SampleCreateJS\project\
- Open the sample Eclipse file or in the Eclipse New Project wizard, create a new Application Extension Project. Provide a name for the project, then click Next.
- On the New Adobe Application Extension Project panel, choose Adobe Animate as the target application and click Next.
- Change the extensions of the plug-in files that you had created from .dll to .fcm on Windows and from .plug-in to .fcm.plug-in on Mac and add the plug-in files to the project (ExtensionContent/plugins/lib/win for Windows and ExtensionContent/plugins/lib/mac for MAC).
- Configure your extension by modifying the manifest.xml. To open the manifest file, right-click on the extension in project explorer and select Adobe Extension Builder 3 > Bundle Manifest Editor and select the manifest tab in Bundle Manifest Editor present at EclipseProject\.staged-extension\CSXS.
- To enable editing the manifest.xml, right-click inside the window and select Open with > XML editor. The two tags that you must concentrate on are: ExtensionList and DispatchInfoList:
A typical ExtensionList tag looks as below:
<ExtensionList> <Extension Id="PluginID" Version="1.0" /> <Extension Id="PublishSettingsID" Version-"1.0" /> </ExtensionList>
This tag contains the list of extensions in the final ZXP package in which each extension has a unique string as its ID. In this case, the .dll or .plugin file created in the previous section is included in an extension. Then, the other extension is used for configuring the Publish Settings UI of the Publisher. In the sample, ExtensionList tag the extension with the extension ID PluginID contains the .dll/.plugin file and the extension with the ID PublishSettingsID configures the publish pettings UI of the publisher.
- The DispatchInfoList tag contains details about each extension mentioned in the ExtensionList. The following is an example of DispatchInfoList:
<DispatchInfoList> <Extension Id="PluginID"> <DispatchInfo > <Resources> <MainPath>./plugin/fcm.xml</MainPath> </Resources> <Lifecycle> <AutoVisible>true</AutoVisible> </Lifecycle> <UI> <Type>ModalDialog</Type> <Menu>CreateJS</Menu> <Geometry> <Size> <Height>200</Height> <Width>200</Width> </Size> </Geometry> </UI> </DispatchInfo> </Extension> <Extension Id="PublishSettingsID"> <DispatchInfo > <Resources> <MainPath>./index.html</MainPath> </Resources> <Lifecycle> <AutoVisible>true</AutoVisible> </Lifecycle> <UI> <Type>ModalDialog</Type> <Menu>Publish Settings</Menu> <Geometry> <Size> <Height>170</Height> <Width>486</Width> </Size> </Geometry> </UI> </DispatchInfo> </Extension> </DispatchInfoList>
- For the extension containing the .dll or the .plugin file, you can ignore all the tags except the MainPath tag. The MainPath tag contains path to the file fcm.xml relative to the ExtensionContent folder. You must rename the .dll file to .fcm and placed inside the win folder beside the fcm.xml. Similarly, if you are working on the Mac environment, rename the .plugin file to .fcm.plugin and place it inside the mac folder beside the fcm.xml.
- The HTML extension to configure the publish settings user interface is an HTML extension to Animate. To know more about HTML extensions to Animate, see Creating HTML Extensions.
- Ensure that the lower value of the version attribute in the Host tag is 14.1, the minimum (internal) version of Animate with Custom Platform Support.
<ExecutionEnvironment> <HostList> <Host Name="FLPR" Version="14.1" /> </HostList>. . . </ExecutionEnvironment>
- Switch to the Script Explorer view, right-click on your project and choose Export > Adobe Extension Builder 3 > Application Extension. The Export Wizard appears.
- You must have a certificate to sign the extension package. Browse to an existing certificate or click Create to create a new certificate.
- Click Finish to compile the project. Eclipse generates a plug-in file with .zxp extension, which you can host on the Adobe Add-ons site.
You can distribute the custom platform support plug-in by hosting it on the Adobe Add-ons page and monetize it. Your plug-in package goes through an Adobe review and approval process before it is listed on the page. You can host a plug-in as follows:
- Log in to the Adobe Add-ons page using your Adobe user ID and password.
- On the left panel, under Become a producer, click the link Go to the producer portal.
- Click the Sign-up button if you are not signed up as a producer.
- For detailed instructions on how to sign up as a producer and host your plug-ins, see Getting Started with the Producer Portal.
- Complete the following steps in the producer portal workflow as documented in the Getting Started page:
- Package your product in a single file.
- Enter information about the product and upload the file.
- Add marketing assets.
- Preview your product.
- Submit your product for approval.
- After approval, your plug-in is listed under the Animate product category on the Add-ons page.
Fill the following form if you want to send any questions, concerns, product bugs, or feature requests to the Animate product team: