swfmill
When Getting Started doing Flash development it may be helpful to create assets.
The documentation for swfmill is somewhat difficult to track down, especially the simple function the following summary may be useful.
Make the Xml-file (asset_lib.swfml):
<?xml version="1.0" encoding="utf-8"?> <movie width="60" height="20" framerate="20" frames="1" as3="1" version="9"> <frame> <library> <sound id="audio_01" import="sound/bgm.mp3"/> <clip id="clip_01" import="swfs/library.swf"/> <clip id="clip_02" import="image/background.png"/> <bitmap id="image_01" import="image/arrow.png"/> <font id="font_01" import="library/vera.ttf" glyphs="0123456789"/> <import file="library/library.swf" url="http://foo.com/library.swf"/> </library> </frame> </movie>
Please, note following undocumented attributes:
- frames attribute should correspond total number of frames in the movie
- as3 attribute should be set to 1 if you want create AVM2 compatible movieclips
Run from command line
swfmill simple asset_lib.swfml asset_lib.swf
In order to make use of the swf library thus produced an asset_class.hx needs to created from the asset_lib.swfml.
The asset_class.hx is then imported into those classes that make use of the library.
<?xml version="1.0"?> <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="no" omit-xml-declaration="yes" method="text" encoding="UTF-8" /> <xsl:template match="/"> import flash.display.Bitmap; <xsl:for-each select="//bitmap"> class <xsl:value-of select="@id"/> extends Bitmap { public function new() { super(); } } </xsl:for-each> <xsl:for-each select="//clip"> class <xsl:value-of select="@id"/> extends MovieClip { public function new() { super(); } } </xsl:for-each> <xsl:for-each select="//sound"> class <xsl:value-of select="@id"/> extends MovieClip { public function new() { super(); } } </xsl:for-each> </xsl:template> </xsl:transform>
xsltproc -o asset_classes.hx library.xslt asset_lib.swfml
And don't forget to mention asset_lib.swf when compiling with haxe:
-swf-lib asset_lib.swf