Набросал тут классик)

Код AS1/AS2:
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.Timer;
/**
* ...
* @author wolsh
*/
public class FilmViewer extends Bitmap
{
private var _film:BitmapData;
private var _frameRect:Rectangle;
private var _fps:uint;
private var _width:Number;
private var _height:Number;
private var _timer:Timer;
private var _loop:uint;
private var _loopCount:uint = 0;
private var _position:Number;
private var _frame:uint = 0;
public function FilmViewer(screenWidth:Number, screenHeight:Number)
{
_width = screenWidth;
_height = screenHeight;
bitmapData = new BitmapData(_width, _height);
super(bitmapData, "auto", true);
}
public function mount(film:BitmapData, cadrRect:Rectangle, fps:uint):void
{
_film = film;
_frameRect = cadrRect;
_fps = Math.round(1000/fps);
bitmapData.copyPixels(_film, _frameRect, new Point());
}
public function demount():void
{
_timer.stop();
_timer = null;
_film = null, _frameRect = null, _fps = 0;
bitmapData.dispose();
_frame = 0;
_loopCount = 0;
}
public function play(loop:uint = 1):void
{
_loop = loop;
_loopCount = 0;
_position = _frameRect.x;
_timer = new Timer(_fps);
_timer.addEventListener(TimerEvent.TIMER, viewNextFrame);
_timer.start();
}
public function stop():void
{
_timer.stop();
}
public function get currentFrame():uint
{
return _frame;
}
private function viewNextFrame(event:TimerEvent):void
{
if (_loopCount < _loop || _loop == 0)
{
var cadr:Rectangle = new Rectangle(_position, _frameRect.y, _frameRect.width, _frameRect.height);
bitmapData.copyPixels(_film, cadr, new Point());
_position += _frameRect.width;
_frame += 1;
if (_position > _film.width - _frameRect.width)
{
_position = _frameRect.x;
_loopCount += 1;
_frame = 0;
}
}
}
}
}
Создаете экземпляр FilmViewer, монтируете вашу битмапДату, задаете размер кадра и отступы (Rectangle), фпс, и вперед - плей. Количество лупов указываете обязательно, если бесконечно - 0.
пример

Код AS1/AS2:
var projector:FilmViewer = new FilmViewer(122, 122);
addChild(projector);
projector.x = projector.y = 50;
var cadr:Rectangle = new Rectangle(0, 0, 122, 122);
var moveData:BitmapData = (new moveFilm() as Bitmap).bitmapData;
projector.mount(moveData, cadr, 12);
projector.rotation = 25;
projector.scaleX = projector.scaleY = 1.5;
projector.play(5);