Недавно я взял на себя довольно сложную задачу - создать интерактивное музыкальное видео для популярного шоу Ghost Whisperer. Я попал в проект поздно и столкнулся с гигантским авторским файлом (длиной около 5000+ кадров). Предыдущий программист (который делал все в AS2) по существу вставил FLV продолжительностью две с половиной минуты на временной шкале времени и в определенные моменты кадра добавлял клипы для интерактивности с базовой функциональностью щелчка мышью, которая заставляла бы эти клипы воспроизводить другие клипы с некоторыми элементами флэш-памяти и некоторыми элементами видео.
(окончательную версию, которую я создал, можно посмотреть здесь http://www.gwghostmagic.com);
Будучи аккуратным уродом, я решил перестроить все это в AS3, полностью обрезать временную шкалу и вместо этого загружать свои элементы во время выполнения, чтобы вместо 5000 кадров у меня был один кадр, а для запуска действий добавлялось Событие. Прослушиватель событий ENTER_FRAME для запуска интерактивности, когда загруженный .swf достигнет определенных кадров. С точки зрения программистов все стало намного понятнее и проще манипулировать определенными действиями. Проблема была в том, что эта штука бежала как дерьмо.
Версия с фреймом 5000+ загружалась быстрее и работала более плавно, чем моя версия AS3. Что приводит меня к вопросу, когда лучше встраивать и запускать временную шкалу, чем запускать прослушиватель событий? Вспышка лучше подходит для функциональности временной шкалы?
Изначально я решил создать и запустить потоковый файл .flv, но синхронизировать действия с .flv было невозможно, потому что .flv работал со скоростью 23,975 кадров в секунду, тогда как мой флэш-фильм работал со скоростью 24 кадра в секунду. Увы, я был вынужден скомпилировать .swf со встроенным FLV. Затем этот .swf был загружен в мой основной файл .swf, который содержал все функции и дополнительные клипы, которые будут воспроизводиться в соответствии с положением кадра загруженного .swf.
Одна вещь, которую я заметил, заключается в том, что Event.ENTER_FRAME, кажется, замедляет работу всего проклятого приложения, потому что в каждом кадре ему приходится выполнять список операторов if длиной 200 строк кода. При этом, если бы все это было встроено, мне может понадобиться только вставить ключевой кадр, в котором будет создан экземпляр интерактивного клипа, а затем он сразу узнает, что делать, а не циклически просматривает операторы if else.
Я облажался, пытаясь сделать вещи красивыми и аккуратными? Лучше позволить вспышке быть вспышкой? Должен ли я искать другую карьеру? Любой вклад приветствуется.