Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.09.2008, 18:54
gen4 вне форума Посмотреть профиль Отправить личное сообщение для gen4 Найти все сообщения от gen4
  № 1  
Ответить с цитированием
gen4
[+4 18.09.08]

Регистрация: May 2006
Сообщений: 79
По умолчанию Секвенция 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 единственный кадр.

Старый 04.09.2008, 19:07
divinus вне форума Посмотреть профиль Отправить личное сообщение для divinus Найти все сообщения от divinus
  № 2  
Ответить с цитированием
divinus
 
Аватар для divinus

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
а не легче написать простенький класс для хранения кадров и их проигрывания?
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

Старый 04.09.2008, 19:22
gen4 вне форума Посмотреть профиль Отправить личное сообщение для gen4 Найти все сообщения от gen4
  № 3  
Ответить с цитированием
gen4
[+4 18.09.08]

Регистрация: May 2006
Сообщений: 79
Цитата:
Сообщение от divinus Посмотреть сообщение
а не легче написать простенький класс для хранения кадров и их проигрывания?
Т.е. хранить битмапдаты в массиве и отрисовывать на ENTER_FRAME?

Старый 04.09.2008, 19:28
_Smirnoff вне форума Посмотреть профиль Отправить личное сообщение для _Smirnoff Найти все сообщения от _Smirnoff
  № 4  
Ответить с цитированием
_Smirnoff
 
Аватар для _Smirnoff

блогер
Регистрация: Jul 2007
Адрес: Russia
Сообщений: 292
Записей в блоге: 5
Можешь реализовать свой генератор тактов...
__________________
Оптимизация производительности на уровне кода

Старый 04.09.2008, 20:16
divinus вне форума Посмотреть профиль Отправить личное сообщение для divinus Найти все сообщения от divinus
  № 5  
Ответить с цитированием
divinus
 
Аватар для divinus

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
Цитата:
Т.е. хранить битмапдаты в массиве и отрисовывать на ENTER_FRAME?
здесь вы как разработчик вольны избрать любой путь для реализации...
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

Старый 04.09.2008, 21:13
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 6  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Дело в том, что, насколько я знаю, 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, время: 17:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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