Skip to content
This repository was archived by the owner on May 15, 2022. It is now read-only.

Shape Export

claus edited this page Aug 13, 2010 · 21 revisions

With as3swf you can export any shape contained in a SWF, including font shapes of embedded fonts, to virtually any other format. You can redraw shapes with Actionscript at runtime, or export source code (e.g. Actionscript, Objective-C, SVG, Degrafa, FXG), or do whatever you feel like doing with it. Reuse your existing Flash vector art on other platforms.


Usage

public function ShapeExport() {
  var request:URLRequest = new URLRequest("any.swf");
  var loader:URLLoader = new URLLoader();
  loader.dataFormat = URLLoaderDataFormat.BINARY;
  loader.addEventListener(Event.COMPLETE, completeHandler);
  loader.load(request);
}
private function completeHandler(e:Event):void {
  var swf:SWF = new SWF(URLLoader(e.target).data as ByteArray);
  for (var i:uint = 0; i < swf.tags.length; i++) {
    var tag:ITag = swf.tags[i];
    if (tag is TagDefineShape) {
      TagDefineShape(tag).export();
    }
  }
}

The export() method expects a SAX-style callback handler instance that implements IShapeExportDocumentHandler. If no such handler is provided, it uses DefaultShapeExportDocumentHandler which simply traces Actionscript Drawing API commands to the console.


Limitations

So far only simple strokes and fills are supported (no gradient or bitmap fills, etc).

Also, fills and strokes are currently exported in one pass which can lead to artefacts when drawing strokes. (fixed)

I’m working on it.

Clone this wiki locally