сделал так(первый вариант):

Код AS3:
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
/**
* ...
* @author mick
*/
public class UnitAnimation extends Sprite
{
static public const UNIT_BODY_MAN:String = "Man";
static public const UNIT_EQUIPMENT_AK:String = "AK_Equipment";
public function UnitAnimation(bodyType:String, equipment:Array=null)
{
var i:int = 0;
super();
if (equipment == null)
equipment = [];
addChild(Main.newMovieClip(bodyType));//функция Main.newMovieClip(imageName:String):MovieClip - выдает мувик из файла ресурсов
while (i < equipment.length)
addChild(Main.newMovieClip(equipment[i++]));
gotoAndStop(0);
}
public function gotoAndStop(frame:Object, scene:String = null):void
{
var i:int = numChildren;
while (i-- > 0)
MovieClip(getChildAt(i)).gotoAndStop(frame, scene);
}
public function get currentFrame():int
{
if (numChildren > 0)
return MovieClip(getChildAt(0)).currentFrame;
return 1;
}
public function get totalFrames():int
{
if (numChildren > 0)
return MovieClip(getChildAt(0)).totalFrames;
return 1;
}
public function gotoAndPlay(frame:Object, scene:String = null):void
{
var i:int = numChildren;
while (i-- > 0)
MovieClip(getChildAt(i)).gotoAndPlay(frame, scene);
}
public function stop():void
{
var i:int = numChildren;
while (i-- > 0)
MovieClip(getChildAt(i)).stop();
}
public function play():void
{
var i:int = numChildren;
while (i-- > 0)
MovieClip(getChildAt(i)).play();
}
public function nextFrame():void
{
var i:int = numChildren;
while (i-- > 0)
MovieClip(getChildAt(i)).nextFrame();
}
public function prevFrame():void
{
var i:int = numChildren;
while (i-- > 0)
MovieClip(getChildAt(i)).prevFrame();
}
public override function set mouseEnabled(value:Boolean):void
{
super.mouseEnabled = value;
var i:int = numChildren;
while (i-- > 0)
MovieClip(getChildAt(i)).mouseEnabled=value;
}
public override function get mouseEnabled():Boolean
{
return super.mouseEnabled;
}
public function setEquipment(equipment:Array, playAnimation:Boolean = true):void
{
var i:int = numChildren;
while (i-- > 1)
removeChildAt(i);
i = numChildren;
while (i < equipment.length)
addChild(Main.newMovieClip(equipment[i++]));
if (playAnimation)
gotoAndPlay(currentFrame);
else
gotoAndStop(currentFrame);
}
}
}
Не нравится мне такой вариант =(
Думаю второй был бы быстрее... Но с ним не знаю как лучше сделать смену изображений в зависимости от кадра (собственно анимацию). Просто подписать обработчик события EnterFrame с сменой битмапДаты? Не будет ли это слишком долго?