|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2010
Сообщений: 9
|
проблема с вложенными детьми в movieclip
Добрый день, уважаемое сообщество.
Столкнулся с такой проблемой: у меня есть MovieClip, в котором лежат другие мувики с анимацией. Для каждого из кадров главного мувика я делаю BitmapData, затем перехожу на следующий кадр, чтобы в скриншоте была анимация, я делаю переход всем внутренним мувикам на следующий кадр. Но в результате я не получаю анимации, а получаю первый статический кадр, хотя трейсы показывают, что создаются все кадры. Можно как-то решить эту проблему без использования таймера или же enter_frame? |
|
|||||
Регистрация: Mar 2010
Сообщений: 100
|
Для чего вообще BitmapData.
Вообще, что хотите сделать, какая цель ? |
|
|||||
Регистрация: Mar 2010
Сообщений: 9
|
Такой метод мне необходим для визуального прироста производительности (т.к. много сложного вектора на сцене получится), памяти конечно больше уходит, но это уже вопрос оптимизации
|
|
|||||
Регистрация: Mar 2010
Сообщений: 9
|
Цитата:
|
|
|||||
Регистрация: Mar 2010
Сообщений: 100
|
Приведите код или важные куски кода, а то как-то сложно.
|
|
|||||
Регистрация: Mar 2010
Сообщений: 9
|
private final function addElements(ClassDefinition:Class, strState:String = null):Vector.<BitmapData> { var vecStateArray:Vector.<BitmapData> = new Vector.<BitmapData>(), i:int = 0, j:int, iTotalChildren:int, matr:Matrix, mc:MovieClip = new ClassDefinition(), bmd:BitmapData, iTotalFrames:int = mc.totalFrames, rect:Rectangle = mc.getBounds(mc); if (strState) { mc.gotoAndStop(strState); } for (i = mc.currentFrame; i <= iTotalFrames; i++) { mc.gotoAndStop(i); if (mc.currentLabel != strState) { break; } matr = new Matrix(); matr.tx = -rect.x; matr.ty = -rect.y; bmd = new BitmapData(rect.width, rect.height, true, 0x00000000); bmd.draw(mc, matr); iTotalChildren = mc.numChildren; for(j = 0; j < iTotalChildren; j++) { jumpNextFrame(mc.getChildAt(j), i); } vecStateArray.push(bmd); } return vecStateArray; } private final function jumpNextFrame(doObject:DisplayObject, frame:int):void { var mc:MovieClip = doObject as MovieClip; if (mc) { var children:int = mc.numChildren; for(var i:int = 0; i < children; i++) { jumpNextFrame(mc.getChildAt(i), frame); } mc.gotoAndStop(frame% mc.totalFrames); } } |
|
|||||
Регистрация: Mar 2010
Сообщений: 100
|
Как-то мудрено все очень.
Ну в целом вроде все норм. Не понятно почему в функции объявление типа ClassDefinition:Class , так известно, что на входе мувиаклип, ну да ладно. а как рисуете ? |
|
|||||
Регистрация: Mar 2010
Сообщений: 9
|
Цитата:
где _bmd - битмапдата объекта, который лежит на сцене, а bmd получили из описанного выше метода. Повторюсь, что написанный мной код работает, если в мувике нет мувиков с анимацией, а если есть, то картинка не меняется, хотя видно что по тику таймера кадры меняются |
|
|||||
Регистрация: Mar 2010
Сообщений: 100
|
Я что то думал, что вообще не работает.
Видимо анимацию нужно разбить на кадры, а кадры уже переводить в битмапы. |
Часовой пояс GMT +4, время: 13:41. |
|
« Предыдущая тема | Следующая тема » |
Теги |
bitmapdata , frame , movieclip |
|
|