![]() |
Анимация загружает ЦП. Какие предложения?
Есть 500 Sprit'ов. Из них 105 падают вниз со скоростью 60px/0,020sec.
При этом: -если разрешение 640х480, загрузка ЦП 35-40% -если режим StageDisplayState.FULL_SCREEN, загрузка ЦП 80-95% (анимация тормозит) Это всё на компьютерах: -Intel Celeron 1.80 GHz, 512 RAM, Radeon X1600 -Intel Celeron 2.20 GHz, 1Gb RAM, Radeon X1600 -Intel Celeron 2.40 GHz, 1Gb RAM, Radeon X1600 Как уменьшить загрузку ЦП на этих компьютерах? Есть ли разница каким образом делать анимацию (EnterFrame или Timer)? Где лучше собирать анимацию во Flash CS 5 или Flash Builder 4? |
важно, что внутри спрайтов
|
может все 105 падающих на битмару нарисовать и битмапу ронять?
|
Убрать фильтры.
|
Битмаб как вариант идет, а если их склеивать в один битмап? можно это програмно?
|
Можно. Читайте про методы класса BitmapData.
|
Цитата:
|
Есть. А также, есть разница при сложных векторных фигурах, есть разница при наличии фильтров на объектах, есть разница при mouseChildren = mouseEnabled = true, если пользователь проведет мышкой и т.д.
|
Цитата:
|
На счет того каким образом делать анимацию EnterFrame или Timer, что меньше нагружет?
|
Что реже вызывается, то и меньше грузит. Это не очевидно?
|
Цитата:
В твоем случае лучше сделать один глобальный обработчик EnterFrame для stage, например, и в нем в цикле двигать все объекты. Если тормозит, можно попробовать снизить фреймрейт, но лучше удостовериться, что все объекты совершенно примитивны, то есть на них нет своих анимаций, не навешаны никакие листенеры, не прописаны никакие скрипты, не изменяется альфа и что все они cacheAsBitmap. |
EnterFrame желательно использовать 1 на всех, а не каждому 1
|
Цитата:
|
Цитата:
|
КорДум А зачем делать анимацию быстрее фреймрейта? Отрисуется же всё равно по фреймам.
|
Aquahawk
Скорее всего он имел ввиду смещение маленькими шагами на большие растояния. Не для анимация, а для определённых проверок. Например не пролетела ли пуля тоненькую стену. |
Честно говоря, не понимаю пристрастия к таймеру для реализации анимации.
Таймер: а. сможет послать событие только в общем потоке. Т.е. опять же после ENTER_FRAME. б. вследствие этого не точен. Единственный сомнительный смысл в нем, если он сможет выполниться несколько раз за фрейм. Но тут опять же: а. придется вызывать updateAfterEvent, что форсирует и без того самую затратную операцию — рендеринг. По мне у таймера есть единственное применение (причем прямо ему присущее): через n-е время послать событие, а уже по этому событию запускать анимацию и т.д. |
Цитата:
Код AS3:
|
Цитата:
|
Цитата:
Добавлено через 1 минуту alatar, это как вариант имелся в виду ;) |
Цитата:
|
Ладно, сдаюсь, не стреляйте :)
|
Пришёл злой дядя загрузил студентов :)
имхо Делать моргание светодиота всёже проще простой анимацией, если моргание не от чего не зависит. |
Всем спасибо. Позновательная получилась тема. :)
|
Цитата:
|
alatar
Да вы правы, я об этом не думал. Тогда нужно поэксперементировать и выяснить, насколько проигрывание 500-тыщ мувиклипных светодиодов затратнее тех-же 500-тыщ но при помощи смены цвета скриптом из одного enterFrame например. |
разве последний плеер не поддерживает аппаратное ускорение?
|
Цитата:
|
etc
Слуште а просветите плз, что такое апаратное ускорение ? |
Цитата:
|
графику можно рисовать с помощью ЦПУ, а можно видеокартой. Последнее называют аппаратным 2д/3д ускорением
|
Цитата:
|
Цитата:
|
| Часовой пояс GMT +4, время: 13:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.