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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.02.2012, 14:25
s3dworld вне форума Посмотреть профиль Отправить личное сообщение для s3dworld Найти все сообщения от s3dworld
  № 1  
Ответить с цитированием
s3dworld

Регистрация: Apr 2010
Сообщений: 170
По умолчанию Отказ от MovieClip'ов, Sprite'ов и Bitmap'ов

Всем доброго дня!

Этой ночью мне в голову стукнула безумная идея. Расскажу её Вам, а Вы оцените на сколько она выгодна. В теме я написал отказ от Bitmap'ов, но это не совсем так. Bitmap'ов будет два:

Код AS3:
public var primaryBuffer:Bitmap=null;
public var backBuffer:Bitmap=null;
Как Вы видите, я решил использовать два Bitmap'а как буфера для переключения. То один на экране будет, то другой. Основными же действующими компонентами будут классы BitmapData. Идея такая, тот буфер что в текущий момент не на экране мы каждый кадр очищаем и выводим попиксельно (регионами или ещё какими-то способами). Собственно на счёт очистки можно оптимизировать и перерисовывать только изменившиеся части (но это уже для тех случаях, если хочется позаморачиваться). В общем когда кадр нарисован в буфер, мы меняем буфера местами. Вот и всё! То есть работаем только с пиксельными данными. Можно будет насоздавать своих классов анимации, из набора BitmapData'ов и их переключение.

На сколько это хорошая идея для повышения производительности? Кто так делает вообще?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Поздравляю вы "придумали" блитинг.
Цитата:
Как Вы видите, я решил использовать два Bitmap'а как буфера для переключения.
Обычно достаточно одного.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 23.02.2012, 14:29
s3dworld вне форума Посмотреть профиль Отправить личное сообщение для s3dworld Найти все сообщения от s3dworld
  № 3  
Ответить с цитированием
s3dworld

Регистрация: Apr 2010
Сообщений: 170
alatar
Цитата:
Поздравляю вы "придумали" блитинг.
Давно всё придумано. Просто мне в голову пришло а не будет ли это выгодно. Кто-то это использует? Стоит ли на такой способ переходить?
Цитата:
Обычно достаточно одного.
А мерцания разве не будет?

Старый 23.02.2012, 14:30
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 4  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
а как вы будите обрабатывать пользовательские события, например наведение на кнопку ил другие элементы интерфейса?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Кто-то это использует?
Все растровые игровые движки. Например, http://flixel.org/
Цитата:
Стоит ли на такой способ переходить?
Зависит от задачи. Этот способ снижает нагрузку на процессор, но увеличивает потребление памяти.
Цитата:
А мерцания разве не будет?
Не будет.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 23.02.2012, 14:36
s3dworld вне форума Посмотреть профиль Отправить личное сообщение для s3dworld Найти все сообщения от s3dworld
  № 6  
Ответить с цитированием
s3dworld

Регистрация: Apr 2010
Сообщений: 170
nOobCrafter
Цитата:
а как вы будите обрабатывать пользовательские события, например наведение на кнопку ил другие элементы интерфейса?
Так же как это делают на C++ с Direct3D. Ручное отслеживание по координатам. Передаём объектам координаты мышки.

Старый 23.02.2012, 14:45
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 7  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Есть подозрения, что рисовать в графикс рута - быстрее)
Про глюк типа отсутствия двойной буферизации писали, надо бы найти и плюсануть - там надо wmode ставить на самом деле.
И это, с таким подходом надо вообще-то уходить на AGAL =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 23.02.2012, 14:57
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 8  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
Цитата:
Передаём объектам координаты мышки.
стоит ли овчинка выделки? это означает чуть ли не все переписать с 0. Насколько усложнятся базовые элементы и работа с ними?

Старый 23.02.2012, 15:03
s3dworld вне форума Посмотреть профиль Отправить личное сообщение для s3dworld Найти все сообщения от s3dworld
  № 9  
Ответить с цитированием
s3dworld

Регистрация: Apr 2010
Сообщений: 170
nOobCrafter
Цитата:
стоит ли овчинка выделки? это означает чуть ли не все переписать с 0. Насколько усложнятся базовые элементы и работа с ними?
Если это будет быстрее работать, то стоит. Я про этот способ подумал из-за скорости вывода. Да и и так у меня все объекты, это Bimtap'ы. Просто написать несколько классов по их последовательному переключению для анимации. Хранить вектор объектов, которые в данный момент выведены. У каждого такого объекта ссылка на уникальный BitmapData. Подписаться на вождение мышкой по State и передавать в каждый элемент вектора координаты мышки. Пускай каждый объект сам решает навели на него или нет. Правда надо будет реализовать Z-Order, чтобы передние объекты не позволяли задним функционировать в наведении перекрытых областей. Но если это даст существенный прирост в скорости, то почему бы и нет?


Последний раз редактировалось s3dworld; 23.02.2012 в 15:07.
Старый 23.02.2012, 19:42
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Про глюк типа отсутствия двойной буферизации писали, надо бы найти и плюсануть - там надо wmode ставить на самом деле.
Если используется BitmapData#lock() (а в данном случае он должен использоваться обязательно), то рассинхронизации не будет.
__________________
משיח לא בא
משיח גם לא מטלפן

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
blitting , rendering

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

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


 


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


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