Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zenrobin/FlashMovieClipConverter
The github home for ShaneSmit's public movieclip converter for Starling
https://github.com/zenrobin/FlashMovieClipConverter
Last synced: 3 months ago
JSON representation
The github home for ShaneSmit's public movieclip converter for Starling
- Host: GitHub
- URL: https://github.com/zenrobin/FlashMovieClipConverter
- Owner: zenrobin
- Created: 2012-12-30T21:18:53.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2013-10-02T15:33:38.000Z (about 11 years ago)
- Last Synced: 2024-05-06T10:35:42.474Z (6 months ago)
- Language: ActionScript
- Size: 164 KB
- Stars: 24
- Watchers: 9
- Forks: 14
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-actionscript-sorted - FlashMovieClipConverter - The github home for ShaneSmit's public movieclip converter for Starling (User Interface / Starling)
README
FlashMovieClipConverter
=======================The github home for ShaneSmit's public movieclip converter for Starling.
Version 1.4 has been downloaded from the Starling Forum and posted here for the community to continue improvements.
**Forum**
http://forum.starling-framework.org/topic/flash-movieclip-converter-preserves-display-list-hierarchy**Orig code: (posted here)**
http://digitalloom.org/CodeWeaver/FlashMovieClipConverter-1.4.zip**Shane's origional Post (October, 2012):**
I started looking at Starling 2 days ago, and quickly realized a great truth that I'm sure you are all very familiar with: Starling MovieClip != Flash MovieClip.
Obviously, we still want to be able to create content and animations with Flash, so the typical solution is to walk through each frame of a Flash MovieClip and create a texture from it. With large and/or long animations this is a terrible waste of GPU memory. And you've lost all the display list hierarchy (if that was important to you).
So I wrote some code that attempts to really convert a Flash MovieClip to a Starling IAnimatable Sprite. It's many AS files worth of code, so I won't paste it here... but here's the basic psuedocode:
Walk through the Flash MovieClip display list:
For each child
If it's a container
Create a Starling Sprite (IAnimatable if more than 1 frame)
Start over, using the new Sprite (recursive)
Else
Create a Starling Texture from it. (uses CRCs to avoid dups)
The code can be found here: http://DigitalLoom.org/CodeWeaver/FlashMovieClipConverter-1.4.zip
Version 1.4 - Added command-line AIR app to pre-convert the Flash MovieClip.
version 1.3 - Performance enhancements, and added clone() function.
version 1.2 - Added typical MovieClip controls (gotoAndStop, etc.)
version 1.1 - Added Texture AtlasingUsage - Run-time conversion:
var animSprite:ConvertedMovieClip = FlashMovieClipConverter.convert( flashMC );
Starling.juggler.add( animSprite );
Usage - Pre-conversion via command-line AIR app> StarlingConverter [-noSortBitmaps] MyMovieClip.swf
var clipData:XML = // Load MyMovieClip-clipData.xml
var atlasBitmaps:Vector. = // Load MyMovieClip-atlas1.png (and atlas2, atlas3, etc.)
var animSprite:ConvertedMovieClip = FlashMovieClipImporter.importFromXML( clipData, atlasBitmaps );
Starling.juggler.add( animSprite );
The code is quite limited... it only handles animation of position, rotation, scale, and alpha. But that's 90% of what I usually animate anyway. It was intended to convert Flash MovieClips loaded from SWF files without any AS linkage (as required by iOS), so I can't guarantee it'll work in other situations. Furthermore, I can't spend time supporting it... so if you improve it, just post it back to this thread.Forgive me if someone else has already created something like this. The only thing I was able to find was emibap's Dynamic Texture Atlas Generator, which didn't appear to do what I wanted.
**Usage**
Flash Movie Clip Converter - Converts a Flash MovieClip to a Starling IAnimatable
Sprite.This code can be used in one of two ways:
1) Convert an in-memory Flash MovieClip object to a ConvertedMovieClip object:
var animSprite:ConvertedMovieClip = FlashMovieClipConverter.convert( flashMC );
Starling.juggler.add( animSprite );2) Export the MovieClip information, then import this data at runtime.
a) Install 'StarlingConverter.air' by double-clicking it. (Windows or Mac)
b) Open up a command prompt ('terminal' on Mac), and navigate to where your
.swf file is located.
c) Run '/path/to/installed/StarlingConverter MyMovie.swf'. Output files will
be placed in the current working directory. (There is no console output)
d) Optional: Multiple .swf files can be specified on the single invocation.
Use the '-noSortBitmaps' to skip presorting the bitmaps before
they are placed in the atlas image.
e) Import with the following as3 pseudo-code:var clipData:XML = // Load MyMovie-clipData.xml
var atlasBitmaps:Vector. = // Load MyMovie-atlas1.png (and atlas2, atlas3, etc.)
var animSprite:ConvertedMovieClip = FlashMovieClipImporter.importFromXML( clipData, atlasBitmaps );
Starling.juggler.add( animSprite );For updates, questions, comments, and rants, see the forum thread at:
http://forum.starling-framework.org/topic/flash-movieclip-converter-preserves-display-list-hierarchy