I think I got it, I took a different approach, the solution was actually right in front of me all along and much easier:
public function switchAnimation(newFrames:Vector.<Texture>, framesps:Number=12):void
{
if (newFrames.length > 0)
{
mDefaultFrameDuration = 1.0 / framesps;
mLoop = true;
mPlaying = true;
mTotalTime = 0.0;
mCurrentTime = 0.0;
mCurrentFrame = 0;
mTextures = new <Texture>[];
mSounds = new <Sound>[];
mDurations = new <Number>[];
mStartTimes = new <Number>[];
for each (var texture:Texture in newFrames)
addFrame(texture);
}
else
{
throw new ArgumentError("Empty texture array");
}
//ensures the new clip plays from frame 1
stop();
//Resume loop
play();
}
I basically re-used the constructor code to reset the animation. I've been testing it and so far it seems to work. I still have to test it with sound to see if that gets messed up when you change textures, but so far it seems good. Hope this helps.