![]() |
Тормоза при отрисовке через время
Здравствуйте!
Есть флешка, которая представляет собой что-то вроде видео плеера. На ней есть кнопка плея и паузы. http://img-fotki.yandex.ru/get/3209/...7b06e277_M.jpg Когда система играет, то проигрывается видео, рисуется несколько графиков, еще двигается несколько мувиклипов, изменяются лейблы. Также, используется свой курсор-муви клип... Короче, происходит много перерисовок. Через примерно минут 20 все начинает прилично тормозить и чем дальше тем хуже. Самое непонятное то, что тормозит даже если выключить плей, то есть остановить всякие отрисовки. От тормозов помогает избавиться только перегрузка страницы. Эксперименты показали, что, видимо, что-то происходит с рисованием. Например если понизить качество, то станет быстрее. Конечно понимаю, что скорее всего дело в руках, но может быть я что-то упустил? Может можно как-то что-то очищать, какой-нибудь буфер рисования? Есть мысли что это может быть? И еще, есть ли какие-нибудь средства профилировки для флеша? Как можно отладиться в такой неприятной ситуации? Добавлено через 20 часов 41 минуту Совсем никаких идей? |
дело в использовании памяти и жестких ссылках на объекты.
|
Проверьте не создается ли каких нибудь объектов на сцене которые периодически с нее удаляются и должны убираться мусорщиком. Скорей всего такие объекты есть, и они подписаны на события, или увязаны с потоковым видео или музыкой. Перед их удалением необходимо убить все ссылки которые могут быть с ними свзяаны, в том числе все подписки.
|
Может быть мемори-лики, но есть подозрение, что автор не очищает graphics при перерисовке. Симптоматика похожая.
Код в студию. Или хотя б тот участок, где производится отрисовка. |
Не забываем отписываться от ENTER_FRAME всегда и везде!!!
|
Ух, а я уже потерял надежду.
Fillini, как можно проверить использование памяти? Что вы имеете в виду под «жесткими ссылками на объекты»? SunShadow, вроде таких объектов нет. Периодически меняются только графики, но это простые lineTo, moveTo. Остальные объекты создаются один раз, а потом просто двигаются или скрываются. Как можно проверить, что все именно так как я думаю? ...есть подозрение, что автор не очищает graphics... Нет, тут вроде все нормально. Я, вообще, использую haXe. Процедуры прорисовки все примерно такие: Код AS3:
тут вроде все нормально. Я использую такого предка для всех визуальных контролов: Код AS3:
|
>>тормозит даже если выключить плей, то есть остановить всякие отрисовки
т.е. тормоза не в самой отрисовке, а выводе нарисованного на экран я бы попробовал сразу после каждой отрисовки перегонять все в битмап, а graphics очищать |
Во Флексе есть профайлер... других вроде нету... Ну можно потрейсить System.totalMemory но это как бы мало поможет - все равно что на таск-менеджер посмотреть :)
|
Память можно посмотреть и ctrl+alt+delete. Если память все время увеличивается значит дело в жестких ссылках.
листенеры правильно писать так Код AS3:
примерно вот таким кодом Код AS3:
|
Цитата:
я бы сказал, что листенеры можно писать и так, если лень или некогда построить нормальную структуру |
| Часовой пояс GMT +4, время: 22:36. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.