Показать сообщение отдельно
Старый 13.11.2013, 16:53
mishasniper вне форума Посмотреть профиль Отправить личное сообщение для mishasniper Найти все сообщения от mishasniper
  № 6  
Ответить с цитированием
mishasniper

Регистрация: Nov 2013
Сообщений: 4
Всем cпасибо !

Мысль ясна,

решение похоже только одно :
вручную "двигать" детей на след кадр.


PS
Вот код , если кому пригодиться для решения подобной задачи.

Код AS3:
 
private var _frames:Vector.<BitmapData>;		
 
private function cacheMc( movie:MovieClip ):void
{
  for (var i:int = 0; i < movie.totalFrames; i++)
  {
    addFrame(movie);
    goToNextFrame(movie);
  }
}
 
private function addFrame(movie:MovieClip):void
{
    var bmd:BitmapData = createBitmap(movie);
 
    _frames.push(bitmap); // или Ваша реализация хранения BitmapData
}
 
static private function goToNextFrame(mc:MovieClip):void
{
  if(mc.currentFrame == mc.totalFrames)
    mc.gotoAndStop(1);
  else
    mc.nextFrame();
 
  for (var i:int = 0; i < mc.numChildren; i++)
  {
    var child:DisplayObject = mc.getChildAt(i);
    if(child is MovieClip)
      goToNextFrame(child as MovieClip);
  }
}
 
static private function createBitmap(movie:MovieClip):BitmapData
{
  var matrix:Matrix = new Matrix();        
  var rect:Rectangle = movie.getBounds(movie);
  matrix.rotate(movie.rotation * DEG_TO_RAD);
  matrix.scale(movie.scaleX, movie.scaleY);
  matrix.tx = -rect.left;
  matrix.ty = -rect.top;
 
  var frame:BitmapData = new BitmapData(rect.width , rect.height, true, 0x00000000);			
  frame.draw(movie, matrix, null, null, null, true);			
 
  return frame;
}