Skip to content

Instantly share code, notes, and snippets.

@maxmonax
Created June 14, 2017 11:48
Show Gist options
  • Save maxmonax/8b15a6c077505810505bbc20aaf1096d to your computer and use it in GitHub Desktop.
Save maxmonax/8b15a6c077505810505bbc20aaf1096d to your computer and use it in GitHub Desktop.
AnimParser AS3
package
{
import by.blooddy.crypto.Base64;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.ByteArray;
/**
* ...
* @author Monax
*/
public class Main extends Sprite
{
public function Main()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
/* Hunter
doOutputParsing("HunterAnimIdleFrames", new HunterAnimIdle_mc(), 2);
doOutputParsing("HunterAnimWalkFrames", new HunterAnimWalk_mc(), 2);
doOutputParsing("HunterAnimPainFrames", new HunterAnimPain_mc(), 2);
doOutputParsing("HunterAnimAttackFrames", new HunterAnimAttack_mc(), 2);
doOutputParsing("HunterAnimDeadFrames", new HunterAnimDead_mc(), 2);
//*/
/* Berserk
doOutputParsing("BerserkAnimIdleFrames", new BerserkAnimIdle_mc(), 2);
doOutputParsing("BerserkAnimWalkFrames", new BerserkAnimWalk_mc(), 2);
doOutputParsing("BerserkAnimPainFrames", new BerserkAnimPain_mc(), 2);
doOutputParsing("BerserkAnimAttackFrames", new BerserkAnimAttack_mc(), 2);
doOutputParsing("BerserkAnimDeadFrames", new BerserkAnimDead_mc(), 2);
//*/
//* Bomber
doOutputParsing("BomberAnimIdleFrames", new BomberAnimIdle_mc(), 2);
doOutputParsing("BomberAnimWalkFrames", new BomberAnimWalk_mc(), 2);
doOutputParsing("BomberAnimPainFrames", new BomberAnimPain_mc(), 2);
doOutputParsing("BomberAnimAttackFrames", new BomberAnimAttack_mc(), 2);
doOutputParsing("BomberAnimDeadFrames", new BomberAnimDead_mc(), 2);
//*/
//* Barbarian
doOutputParsing("BarbarAnimIdleFrames", new BarbarAnimIdle_mc(), 2);
doOutputParsing("BarbarAnimWalkFrames", new BarbarAnimWalk_mc(), 2);
doOutputParsing("BarbarAnimPainFrames", new BarbarAnimPain_mc(), 2);
doOutputParsing("BarbarAnimAttackFrames", new BarbarAnimAttack_mc(), 2);
doOutputParsing("BarbarAnimDeadFrames", new BarbarAnimDead_mc(), 2);
//*/
//* Warrior
doOutputParsing("WarriorAnimIdleFrames", new WarriorAnimIdle_mc(), 2);
doOutputParsing("WarriorAnimWalkFrames", new WarriorAnimWalk_mc(), 2);
doOutputParsing("WarriorAnimPainFrames", new WarriorAnimPain_mc(), 2);
doOutputParsing("WarriorAnimAttackFrames", new WarriorAnimAttack_mc(), 2);
doOutputParsing("WarriorAnimDeadFrames", new WarriorAnimDead_mc(), 2);
//*/
//* Shaman
doOutputParsing("ShamanAnimIdleFrames", new ShamanAnimIdle_mc(), 2);
doOutputParsing("ShamanAnimWalkFrames", new ShamanAnimWalk_mc(), 2);
doOutputParsing("ShamanAnimPainFrames", new ShamanAnimPain_mc(), 2);
doOutputParsing("ShamanAnimAttackFrames", new ShamanAnimAttackMagic_mc(), 2);
doOutputParsing("ShamanAnimDeadFrames", new ShamanAnimDead_mc(), 2);
//*/
//* Chief
doOutputParsing("ChiefAnimIdleFrames", new ChiefAnimIdle_mc(), 2);
doOutputParsing("ChiefAnimWalkFrames", new ChiefAnimWalk_mc(), 2);
doOutputParsing("ChiefAnimPainFrames", new ChiefAnimPain_mc(), 2);
doOutputParsing("ChiefAnimAttackFrames", new ChiefAnimAttack_mc(), 2);
doOutputParsing("ChiefAnimDeadFrames", new ChiefAnimDie_mc(), 2);
//*/
//* Orc
doOutputParsing("OrcAnimIdleFrames", new OrcAnimIdle_mc(), 2);
doOutputParsing("OrcAnimWalkFrames", new OrcAnimWalk_mc(), 2);
doOutputParsing("OrcAnimPainFrames", new OrcAnimPain_mc(), 2);
doOutputParsing("OrcAnimAttackFrames", new OrcAnimAttack2_mc(), 2);
doOutputParsing("OrcAnimDeadFrames", new OrcAnimDead_mc(), 2);
//*/
}
private function doOutputParsing(aName: String, aClip: MovieClip, aScale: Number): void
{
var str: String = parseClip(aClip, aScale);
trace("export const " + aName + " = " + str + ";");
trace("// " + aName + " len = ", str.length);
}
private function parseClip(aClip: MovieClip, aScale: Number): String
{
var mas: Array = []; // [{ "head": {x, y, rot, sx, sy, alpha}, "leg": {} }, ...]
for (var i:int = 0; i < aClip.totalFrames; i++)
{
aClip.gotoAndStop(i);
var item: Object = { };
for (var j:int = 0; j < aClip.numChildren; j++)
{
var subClip: MovieClip = aClip.getChildAt(j) as MovieClip;
if (!subClip) continue;
item[subClip.name] = getClipInfo(subClip, aScale);
}
mas.push(item);
}
return JSON.stringify({anim: mas});
}
protected function getClipInfo(aClip:MovieClip, aScale: Number): Object
{
var cx: Number = (aClip.x * aScale);
var cy: Number = (aClip.y * aScale);
var csx: Number = (aClip.scaleX * aScale);
var csy: Number = (aClip.scaleY * aScale);
return { x: Number(cx.toFixed(2)), y: Number(cy.toFixed(2)), r: Number(aClip.rotation.toFixed(2)),
sx: Number(csx.toFixed(2)), sy: Number(csy.toFixed(2)), a: aClip.alpha };
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment