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

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

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

Регистрация: Feb 2012
Сообщений: 11
По умолчанию Нагрузка на ЦП

Добрый день! Есть проблема, во флешке создается много объектов, которые перемещаются, вращаются и взаимодействуют друг с другом. От этого процессор нагружается и начинает тормозить. Причем загружается он всего на 25% (процессор Core2 Quad), там как раз 4 потока и флеш занимает полностью один из этих потоков. Полазив в интернете, я нашел, что разве некоторые фильтры и видео могут работать в другом потоке, что собственно особо не помогает, остальное вычисления и отрисовка идут в одном потоке.

Может кто-нибудь слышал, есть какие-нибудь хитрости чтобы это ускорить или как-нибудь обойти? весь код, особенно критические моменты оптимизированы, но флешка работает в некоторые моменты на пределе возможностей.

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

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

Старый 07.03.2012, 18:30
dsQuadro вне форума Посмотреть профиль Отправить личное сообщение для dsQuadro Посетить домашнюю страницу dsQuadro Найти все сообщения от dsQuadro
  № 3  
Ответить с цитированием
dsQuadro
 
Аватар для dsQuadro

Регистрация: Feb 2008
Адрес: Москва
Сообщений: 238
Отправить сообщение для dsQuadro с помощью ICQ
думаю тут скорее оптимизации кода больше внимания уделить надо...
ЗЫ: у меня вообще влешка больше 8% кушать не может =)

все подвижные элементы(если они не должны с пользователем контактировать) делаешь в невидимом спрайте... который потом после всех перемещений отрисовываешь в битмапу методом draw()... так работает на порядок быстрее чем даже просто chageAsBitmap


Последний раз редактировалось dsQuadro; 07.03.2012 в 18:44.
Старый 07.03.2012, 18:46
Djay вне форума Посмотреть профиль Отправить личное сообщение для Djay Найти все сообщения от Djay
  № 4  
Ответить с цитированием
Djay

Регистрация: Feb 2012
Сообщений: 11
cacheAsBitmap и другие хитрости я конечно использую, везде где возможно заменил Array на Vector, вызовы элементов массивов все идут по ссылке, все что уходит за пределы видимости либо удаляется совсем, либо просто удаляется со сцены и т. д. И, в принципе, от первоначальных показателей это дало существенный прирост, однако не решило проблему.

Цитата:
Сообщение от dsQuadro Посмотреть сообщение
все подвижные элементы(если они не должны с пользователем контактировать) делаешь в невидимом спрайте... который потом после всех перемещений отрисовываешь в битмапу методом draw()... так работает на порядок быстрее чем даже просто chageAsBitmap
это делать на каждом ENTER_FRAME?


Последний раз редактировалось mooncar; 07.03.2012 в 19:14.
Старый 09.03.2012, 16:42
Monade 2 вне форума Посмотреть профиль Отправить личное сообщение для Monade 2 Найти все сообщения от Monade 2
  № 5  
Ответить с цитированием
Monade 2
 
Аватар для Monade 2

Регистрация: Apr 2011
Сообщений: 38
Цитата:
Сообщение от Djay Посмотреть сообщение
это делать на каждом ENTER_FRAME?
присоединяюсь к вопросу

Старый 09.03.2012, 17:16
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 6  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Можете через один, если вам хочется
Но имелось в виду в каждом.
Как же иначе?
С некоторыми извращениями можно заставить и реагировать с пользователем.
Если перемещение в контейнере не добавленном в список отображения, то getObjectsUnderPoint вам в помощь. Получаем список объектов при мышином событии, которое поймал вьюпорт и вручную диспетчим от самого верхнего чайлда. Метод возвращает только объекты самого нижнего уровня иерархии отображения, поэтому появляются свои тонкости реализации.
Если используете блиттинг (то есть вообще без дисплейобджектконтейнеров, а своя иерархия), то Bitmapdata:hitTest вам в руки.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 09.03.2012 в 17:21.
Старый 09.03.2012, 22:23
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 7  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Цитата:
Сообщение от Djay Посмотреть сообщение
это делать на каждом ENTER_FRAME?
Тоже присоединяюсь к вопросу

Старый 10.03.2012, 20:10
dsQuadro вне форума Посмотреть профиль Отправить личное сообщение для dsQuadro Посетить домашнюю страницу dsQuadro Найти все сообщения от dsQuadro
  № 8  
Ответить с цитированием
dsQuadro
 
Аватар для dsQuadro

Регистрация: Feb 2008
Адрес: Москва
Сообщений: 238
Отправить сообщение для dsQuadro с помощью ICQ
Цитата:
Сообщение от terbooter Посмотреть сообщение
Тоже присоединяюсь к вопросу
как уже ответил ChuwY можно через один... но если серьезно то да, в каждом кадре... хотя я предпочитаю не по энтерФрейм, а по таймеру все это делать...

Старый 10.03.2012, 21:43
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 9  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Вообще-то наоборот. Это энтерфрейм затупливает.
То есть, начинает реже рассылаться.
А таймер фигачит через фиксированное время
вне зависимости от фокуса.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А зачем вам всем ENTER_FRAME? Обновление экрана делается по просьбе представлений. Старшая из них делает stage.invalidate(). А остальные рендерят по Event.RENDER.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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