Everytime i want to call other animation's name, I always stop current animation.
private function stopCurrentAnimation(maincharView:MaincharView,atLastFrame:Boolean=false):void
{
if (_proxy.getCurrAnimationName() == "")
return;
var animData:AnimationData = maincharView.mesh.animationLibrary.getAnimation(_proxy.getCurrAnimationName());
if (animData != null && animData.animator.isPlaying)
{
if (atLastFrame)
animData.animator.gotoAndStop(animData.animator.totalFrames - 1)
else
animData.animator.gotoAndStop(0);
}
_proxy.setCurrAnimationName("");
}
public function playAnim(maincharView:MaincharView,animName:String,fps:uint,loop:Boolean):void
{
stopCurrentAnimation(maincharView);
_proxy.setCurrAnimationName(animName);
var animData:AnimationData = (maincharView.mesh.animationLibrary.getAnimation(animName) as AnimationData);
if (animData == null)
return;
animData.animator.fps = fps;
animData.animator.loop = loop;
animData.animator.gotoAndPlay(0);
}
Those are methods that i use to play and stop MD2 Animations. So that I can do this :
if (bKeyUpIsPressed)
{
if (viewChar1.state != STATE_WALK)
{
viewChar1.state = STATE_WALK;
playAnim("WALK_", viewChar1, 10, true);
}
}
else if (bKeySpaceIsPressed)
{
if (viewChar1.state != STATE_SHOOT)
{
viewChar1.state = STATE_SHOOT;
playAnim("SHOOT_", viewChar1, 10, true);
}
}
The "_" char in the animation names were automatically inserted by Blender MD2 Export Script, I don't know why. :D
Hey... why don't you try to trace your AnimationData's animator by showing your Animator's properties in Debug Output of FlashDevelop, such as : isPlaying, currentFrame, addEventListener of AnimatorEvent, etc...
Good luck.