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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.08.2011, 14:45
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 21  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Можно вообще извратиться, и сделать нечто подобное отслеживанию движения через веб камеру, с помощью BlendMode.DIFFERENCE определять изменившийся регион )

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Если бы это было "оно", Вам бы уже давно сказали. Событие RENDER диспатчится, когда флэш-плеер собирается перерисовать картинку (стейдж). Не более того. Он просто предупреждает (тех кто подписался) - "сейчас буду перерисовывать, кто не спрятался – я не виноват!". Его используют для инвалидации. Например, у вас есть какой-то объект кастомного класса, у которого есть несколько сеттеров для параметров (возьмем здесь – параметров внешнего вида). Применение любого из этих сеттеров требует значительного пересчета и перераспределения внутренних объектов, и их перерисовки. Теперь представьте, что вы задаете подряд несколько изменений - новые width, height, и еще какие-то кастомные свойства, меняющие вложенные объекты. На каждый вызов сеттера происходит изменение и перерисовка. Сначала для width, потом для height, потом еще что-то. Все это требует уймы лишних действий. При инвалидации вы сохраняете полученные сеттерами значения в их storage-переменные, но НЕ производите пересчет, пока не плеер не скажет - "RENDER". Только получив это событие, вы обрабатываете все новые данные скопом. Например, рисуете прямоугольник фона СРАЗУ с новым width, новым height, alpha и color. А не перерисовываете его при изменении КАЖДОГО из этих свойств по-отдельности. В этом смысл получения стандартного события RENDER.
__________________
Reality.getBounds(this);

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Небольшой стеб по теме.
И так, решение задачи. Каждый кадр записываем в битмапу содержимое stage-а, при наступлении следующего кадра - сверяем новую битмапу с предыдущей попиксельно. При отсутствии отличий - удаляем новую битмапу и ждем следующий кадр. При наличии отличий - определяем координаты, где были внесены изменения, по ним вычисляем все возможные объекты. У них сверяем координаты и размеры. Если все осталось на своих местах - поступаем аналогично как для stage. При наличии несоответствий - диспатчим событие.

При таком раскладе ФП наверное и секунды не протянет ))))
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 04.08.2011, 00:37
S-ed вне форума Посмотреть профиль Отправить личное сообщение для S-ed Найти все сообщения от S-ed
  № 24  
Ответить с цитированием
S-ed
 
Аватар для S-ed

Регистрация: Jul 2001
Адрес: SPb.RU
Сообщений: 148
Отправить сообщение для S-ed с помощью ICQ
TanaTiX
Как быть если песочница не позволяет делать снимки с объекта?

Отображается или нет можно проверить через переменную .stage объекта.
__________________
RTFM

Старый 04.08.2011, 10:03
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 25  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от Wolsh Посмотреть сообщение
На каждый вызов сеттера происходит изменение и перерисовка.
Только математика. Перерисовка не происходит. Случай с graphics тоже считаю математикой. С остальным согласен. Если математика сложная, то каждый вызов будет приводить к напрасным тратам ресурсов вплоть до снижения FPS.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 04.08.2011, 11:06
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 26  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
TanaTiX, почти тот же стеб, что предложил я с бленд модом )

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Случай с graphics тоже считаю математикой.
Вот не уверен, хотя не скажу что хорошо представляю себе последовательность действий в данном случае...
То есть вот вызывается сеттер width и в нем вызываются методы графикс, например drawRect, с этим новым width.
Затем так же вызывается сеттер height и снова перерисовка в графиксе. Я вот не уверен, что в результате отрисовка изображения при смене "кадра" будет выполнена только один раз. Я думаю, будут выполнены все команды отрисовки в стеке. А ведь рисование это далеко не всегда один квадратик))) В сумме с возможно очень даже немалыми расчетами (в случае например тригонометрии - секторов, полярных координат и тп) такие лишние отрисовки дают немалую задержку.
__________________
Reality.getBounds(this);

Старый 04.08.2011, 13:52
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 28  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
После clear(), мне представляется, можно чистить стек.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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