Created
June 14, 2017 11:48
-
-
Save maxmonax/8b15a6c077505810505bbc20aaf1096d to your computer and use it in GitHub Desktop.
AnimParser AS3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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