package { //import com.bit101.components.*; import com.codeazur.as3swf.*; import com.codeazur.as3swf.exporters.SVGShapeExporter; import com.codeazur.as3swf.tags.*; import flash.display.*; import flash.events.*; import flash.net.*; import flash.utils.*; public class SWF2SVG_LoadSelf extends Sprite { //private var swfFile:FileReference; //private var svgFile:FileReference; //private var status:Label; //private var load : PushButton; //private var save : PushButton; //private var svg:XML; //private var traceStr:String; //private var filename : String; public function SWF2SVG_LoadSelf() { init(); } private function init():void{ stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; //drawGUI(); var swf:SWF = new SWF(root.loaderInfo.bytes); trace(swf); } /* private function drawGUI() : void { var vbox:VBox = new VBox(this); var buttons:HBox = new HBox(vbox); load = new PushButton(buttons,0,0,"Load SWF",selectSWF); save = new PushButton(buttons,0,0,"Save SVG",selectSVG);save.enabled = false; status = new Label(buttons,0,0,'load a SWF file'); } private function selectSWF(event:MouseEvent):void{ swfFile = new FileReference(); swfFile.addEventListener(Event.SELECT,swfSelected); swfFile.addEventListener(Event.COMPLETE,swfLoaded); swfFile.browse([new FileFilter("SWF File (*.swf)", "*.swf")]); } private function selectSVG(event:MouseEvent):void{ svgFile = new FileReference(); var bytes:ByteArray = new ByteArray(); bytes.writeUTFBytes(svg); //svgFile.save(bytes,filename.replace('.swf','.svg')); svgFile.save(bytes+traceStr,filename.replace('.swf','.svg')); } private function swfSelected(event:Event):void{ swfFile.load(); filename = swfFile.name; save.enabled = false; } private function swfLoaded(event:Event):void{ var bytes:ByteArray = swfFile.data; var swf:SWF = new SWF(bytes); var svgExporter:SVGShapeExporter = new SVGShapeExporter(swf); traceStr='' //for (var i:uint = 0; i < swf.tags.length; i++) { //var tag:ITag = swf.tags[i]; //if (tag is TagDefineShape){ // traceStr+=i+"," // TagDefineShape(tag).export(svgExporter); //} //} TagDefineShape(swf.tags[11]).export(svgExporter); svg = svgExporter.svg; traceStr+=swf.frameSize.toStringSize()+"\r\n" //traceStr+=swf.tags.length-3+"\r\n" //traceStr+=swf.tags[i-3].toString() //traceStr+=TagPlaceObject2(swf.tags[swf.tags.length-3]).matrix.toString()+"\r\n" traceStr+=TagPlaceObject2(swf.tags[13]).matrix.toString()+"\r\n" traceStr+=swf.toString()+"\r\n" //traceStr+=swf.tags[2].toString()+"\r\n" //traceStr+=swf.tags[5].toString()+"\r\n" //traceStr+=swf.tags[8].toString()+"\r\n" if(svg != null){ status.text = "ready! save the SVG file"; save.enabled = true; }else status.text = "no shapes to export found"; } */ } }