![]() |
Video на таймлайне ест fps после удаления
Здраствуйте.
Столкнулся со странным поведением экземпляра класса Video (которое я импортировал с внешнего flv файла в библиотеку Flash CS5.5). Он размещен на таймлайне одного клипа с классом TvSprite. Экземпляр TvSprite лежит внутри клипа-фона для меню. Все происходит так - грузится меню, создается фон, после нажатия на кнопку меню удаляется. Проблема в том, что при каждом переходе видео на начало фпс падает с 30 до 25. Впрочем, важно не это, а то, что после удаления меню видео все равно отьедает фпс. Вставил на первый кадр клипа с видео trace("here", parent); - после удаления выводит here, null. Т.е., видео удаляется. Но все равно трейс выводится и видео крутится. Как обьяснить такое поведение и как удалить видео? UP: похоже, я где-то ошибся и дело не в видео :) После его удаления все равно видет trace. Буду искать ошибку. |
а ты останавливаешь видео перед удалением? Попробуй видео со звуком. Если звук не пропадает, значит видео где-то играется.
|
Вообще не понимаю, что творится :(
Оказывается, дело не в видео. У меня в TVSprite несколько слоев, один из них - для flv видео, а на одном - трейс. Так вот, после удаления слоя с видео все равно трейс виден. Все ссылки зануляю; у меня есть класс меню с "деструктором" - проверял, он вызывается. Само меню зануляется. И спрайт с видео, и его родитель удаляются. Почему же видео не удаляется сборщиком мусора и все равно крутится на фоне, с периодом в несколько секунд понижая фпс? Rzer, если написать stop в "деструкторе" меню для спрайта, на таймлайне которого есть видео, снижение фпс прекращается, но меня все равно такое пугает. |
я думал прошли уже времена, когда люди пугались, что GC в AS такой не совсем понятный..
есть способы повлиять на него, вот такой, например http://silin.su/#AS3/utils/gc |
Так, новый неожиданный поворот.
После закрытия меню несколько секунд счетчик фпс показывает 500-1000 :) Все как будто на быстрой прокрутке - короче, фпс невероятно растет. Это что, глюки плеера такие? Тестировал на разных компьютерах/плеерах. Я сделал так - выделил таймлайн с видео в отдельный клип и поместил его в последний кадр телевизора. А по окончанию меню перехожу на кадр, где нету видео, и они перестают создаваться. |
FPS больше 120 быть не может. Это ваш счетчик неверно считает в какие-то моменты.
Я бы все делал кодом и не использовал кадры. В данном случае это более чем актуально. |
Да я все делаю кодом, кроме графики. Тут такой случай - для игрового туториала сделал видеоподсказки (спрайт телевизора, а внутри него видео), а потом экспортирую изображения телевизора с видео в swc.
Вод код счетчика: Код AS3:
|
Код AS3:
Счетчик правильный. Вероятно там что-то адобовцы намудрили с видео. Какой плеер? Релиз-дебаг? Стандалон, плагин, activeX? А как выглядит в другом плеере? |
И тот, и тот плеер. И стандалон, и плагин. 10.3 и 10.1 (вроде бы).
На разных компьютерах. Удаляю видео с "телевизора" - все нормально. Еще пару часов назад и с видео было все нормально; вроде бы, никаких существенных изменений не делал. Так выглядит туториал (текст даже в ворде не проверял :)): http://habrastorage.org/storage1/cd2...5/3bf67f75.png После его закрытия - несколько секунд такого (слева вверху счетчик): http://habrastorage.org/storage1/7a4...c/73c67506.png |
Хм. Интересно. Почитайте эту темку с комментариями и просто попробуйте сделать другой FPS метер.
ЗЫ. очень симпатичная графика. |
Текущий фпс-метер показывает если не правильную информацию, то близкую к ней. Выставил в настройках 60 фпс - скорость анимации ощутимо меньшая, чем ее скорость в течении нескольких секунд после закрытия видео.
Я так понял, что и одна, и другая ситуация, описанные в теме - это какие-то баги плеера. У меня были два варианта реализации подсказок: 1) Тот, что сначала - на таймлайне телевизора отдельным слоем видео. После полного удаления видео все равно периодически создается и 1-2 обьекта остаются в памяти, при создании понижая фпс до 25, создавая рывки (проверял в профайлере, запуск gc в нем ничего не менял). 2) Тот, что сейчас. Есть телевизор. В нем в последнем фрейме - клип, на таймлайне которого - видео. Первые кадры в телевизоре - анимация помех. При удалении/очистке перехожу на первый кадр (tv.gotoAndStop(0);), где нету клипа с видео. Результат - gc работает, но фпс аномально высок несколько секунд. И еще одно - пока видео играется, размер оперативной памяти резко ростет (+5 мб каждые н секунд). После удаления меню с памятью все нормально. Но самое странное то, что в моей другой игре все сделано по второму способу, но даже без tv.gotoAndStop(0). И видео намного больше (1.5мб против 200кб в этом). Классы интерфейса те же. И вообще никаких проблем :( Добавлено через 1 час 40 минут Что творится. Выкинул все видео. Переконвертировал одно в swf. Заэмбедил: Код AS3:
Код AS3:
|
Ну так возможно в вашем swf есть что то типа timer или установка fps
|
| Часовой пояс GMT +4, время: 04:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.