Здравствуйте!
Допустим, я пишу игру на Flex и у меня есть класс AnimatedObject, который не наследует от DisplayObject и не участвует в иерархии flash сцены. Грубо говоря, он должен выводить определенный кадр своей картинки в заданных координатах. Для этого я в менеджере объектов прохожу по всем объектам и вызываю onDraw, передавая в качестве аргумента backBuffer : BitmapData, в который каждый должен нарисовать себя.
Вот так метод был реализован:

Код AS3:
var frame : Number;
public function onDraw(backBuffer : BitmapData) : void
{
var frameClipRect : Rectangle = new Rectangle(int(frame) * celWidth, 0, frameWidth, frameHeight);
var matrix : Matrix = new Matrix();
matrix.translate(-frameWidth / 2, -frameHeight / 2);
if ( scale )
matrix.scale(scale, scale);
if ( angle )
matrix.rotate(Math.PI * angle / 180.0);
matrix.translate(frameWidth / 2, frameHeight / 2);
matrix.translate(x, y);
backBuffer.draw(bitmap, matrix, null, null, frameClipRect, true);
}
Проблема в отсечении. В документации сказано, что clipRect задает область из источника, которая будет отрисована на целевой BitmapData. Если не задавать clipRect, то объект выводится, но со всеми кадрами. НО Если задавать clipRect как я это делаю, то ничего вообще не выводится, потому что.... clipRect в моем случае задает область отсечения для backBuffer!!!
Что происходит?
Спасибо большое!