package GraphicExport { import Defs.GraphicDef; import flash.display.MovieClip; import djarts.utils.*; import djarts.display.GraphicFactory; import CharacterExport.*; public class AnimPiecePacker { protected var doneCallback; protected var callbackParam; protected var holder:MovieClip; public function AnimPiecePacker(callback, callbackParam, holder:MovieClip) { this.doneCallback = callback; this.callbackParam = callbackParam; this.holder = holder; } protected var defs:Array; public function ExportDefs(defs:Array) { this.defs = defs; ExportNextDef(); } protected function ExportNextDef() { if (defs.length == 0) { Done(); } else { var def:GraphicDef = defs.splice(0, 1)[0]; var graphic = GraphicFactory.Instance().GetGraphic(def.Name, null, function(c, g){GraphicCallback(c,g,def);}); } } protected var toExport:Array = new Array(); protected function GraphicCallback(c, g, def:GraphicDef) { if (g is MovieClip) { var pieceSet:AnimationPieceSet = new AnimationPieceSet(); pieceSet.Name = def.Name; toExport.push(pieceSet); pieceSet.LoadClip(g, ExportNextDef); } else { ExportNextDef(); } } protected function Done() { var builder:AnimPieceExportBuilder = new AnimPieceExportBuilder(toExport); if (doneCallback) doneCallback(builder.Output, callbackParam); } } }