Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   плавный popup (http://www.flasher.ru/forum/showthread.php?t=173721)

andrey_p 10.01.2012 07:47

плавный popup
 
Доброго времени суток,

У меня есть вопрос об оптимизации анимации выскакивающего окна.
из всех вариаций что я пробовал, пока остановился на таких результатах.

способ итераций:
enter_frame - взял его.

отображение:
битмап1 реального размера с исходным окном хранится в памяти, битмап2 лежит на сцене, копирует в себя битмап1 с матрицами транформерами.

Вобщем-то из всей оптимизации пока только работа с битмапом (вроде даблбуфферинг), но этого не достаточно, окошко явно притормаживает.


Если есть еще какие-то эффективные способы или ньюансы подскажите кто знает плиз ? )

Astraport 10.01.2012 10:33

Tweenmax/Tweenlite

andrey_p 11.01.2012 17:24

Tweenlite от Greensock ? лицензия не позволяет.
А где максимальный фреймрейт получить ? timer или EnterFrame ? timer вообще не дал хорошего результата.

Даже простой fadeIn через copyPixels явно притормаживает, есть у кого-нить дельный совет ? )

ivaha83 11.01.2012 18:15

а что там не так с лицензией Tweenlite? Он же вроде бесплатный

andrey_p 11.01.2012 18:35

при скачивании лицензия отображается, он бесплатный не во всех случаях.

Мне вот интеерсно как у них он так шустро делается твин, я просто не вижу как еще можно оптимизировать, к тому же в случае copypixels там и нечего. Возможно топому что они ф-цию от реального времени расчитывают а не от шагов. еще не копался у них в кодах, но недоумаваю )

Stitch512 13.01.2012 19:36

Вообще одно выскакивающее окно тормозить не должно, оптимизировать нужно скорее всего не отрисовку. А твин лучше делать не на основе кадров а на основе прошедшего времени через интерполяцию вычислять значение скейла, тогда анимацию не будет зависеть от фпс.

Dukobpa3 13.01.2012 20:08

Цитата:

А твин лучше делать не на основе кадров а на основе прошедшего времени через интерполяцию вычислять значение скейла
Доля правды в этом есть, но таймер и сам зависит от фпс, как ни прискорбно)) Дискретность таймера не получится поставить меньше чем 1000/<кол-во_кадров> мс. Лучше всего если дискретность будет равняться хотя бы двум-трем кадрам.

Добавлено через 33 секунды
В любом случае всякие твинобиблиотеки получше будут, там это всё учтено.

Stitch512 13.01.2012 20:24

Прошедшее время необходимо брать не из таймера, а путем сравнения на каждом кадре текущего и прошлого значений getTimer, тогда зависимости от фпс не будет.

trick dexter 13.01.2012 23:57

Цитата:

Сообщение от andrey_p (Сообщение 1055867)
отображение:
битмап1 реального размера с исходным окном хранится в памяти, битмап2 лежит на сцене, копирует в себя битмап1 с матрицами транформерами.

зачем?

попробуй менять размеры всплывающего окна при каждой итерации, изменяя значение width и height вместо copypixels.

ну а если используются сложные трансформации, то можно их предварительно создать на каждый кадр, и сложить в массив, и уже оттуда доставать при каждой итерации

в любом случае проблема в медленной работе флеша с битмапами, а тут еще и размер битмапа наверняка не маленький

Wolsh 14.01.2012 00:21

Цитата:

в любом случае проблема в медленной работе флеша с битмапами
Сильное утверждение. Медленное по сравнению с чем? С работой флэша с вектором или с работой DirectX-приложений с битмапами?


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

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