Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Секвенция bitmap'ов в мувиклип (http://www.flasher.ru/forum/showthread.php?t=115621)

gen4 04.09.2008 18:54

Секвенция bitmap'ов в мувиклип
 
ситуация в следующем:
Некий "навороченный" эффект, в целях увеличения быстродействия, рендриться в серию битмапов, что бы позже можно было без тормозов его проиграть.

Вопрос - как это реализовать?


Я пытаюсь сделать так:
Код:

private function renderFrame(frame){
                                  videoSource.gotoAndStop(frame); //исходник
                                  rendredVideo.gotoAndStop(frame); // новый пустой мувик куда я наивно пытаюсь складывать битмапы
                                 
                                  var tmpBMD = new BitmapData(640,480);
                                  tmpBMD.draw(videoSource);
                                                                               
                                        tmpBMD.applyFilter(tmpBMD,tmpBMD.rect,new Point(0,0),new ColorMatrixFilter(mtx));
                                        tmpBMD.applyFilter(tmpBMD,tmpBMD.rect,new Point(0,0),new BlurFilter(30,30));
                                        tmpBMD.applyFilter(tmpBMD,tmpBMD.rect,new Point(0,0),_filter);
                                       

                                  rendredVideo.addChild( new Bitmap(tmpBMD));
                                }

Но эта схема отказывается работать - в мувиклипе rendredVideo - 1 единственный кадр.

divinus 04.09.2008 19:07

а не легче написать простенький класс для хранения кадров и их проигрывания?

gen4 04.09.2008 19:22

Цитата:

Сообщение от divinus (Сообщение 762335)
а не легче написать простенький класс для хранения кадров и их проигрывания?

Т.е. хранить битмапдаты в массиве и отрисовывать на ENTER_FRAME?

_Smirnoff 04.09.2008 19:28

Можешь реализовать свой генератор тактов...

divinus 04.09.2008 20:16

Цитата:

Т.е. хранить битмапдаты в массиве и отрисовывать на ENTER_FRAME?
здесь вы как разработчик вольны избрать любой путь для реализации...

kackbip 04.09.2008 21:13

Дело в том, что, насколько я знаю, gotoAndStop будет выполнен не сразу, а только при всплытии события ENTER_FRAME, т.е. после
videoSource.gotoAndStop(frame);
rendredVideo.gotoAndStop(frame);

вы должны сделать следующее
videoSource.addEventListener(Event.ENTER_FRAME, _onEnterFrame);

А также нужно определить метод-обработчик события _onEnterFrame:
Код:

private function _onEnterFrame(evt:Evnet):void{
  var tmpBMD = new BitmapData(640,480);
  tmpBMD.draw(videoSource);
  tmpBMD.applyFilter(tmpBMD,tmpBMD.rect,new Point(0,0),new ColorMatrixFilter(mtx));
  tmpBMD.applyFilter(tmpBMD,tmpBMD.rect,new Point(0,0),new BlurFilter(30,30));
  tmpBMD.applyFilter(tmpBMD,tmpBMD.rect,new Point(0,0),_filter);

  rendredVideo.addChild( new Bitmap(tmpBMD));
}

Должно быть так.


Часовой пояс GMT +4, время: 19:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.