Безрежимное воспроизведение последовательных звуков во Flash
Я делаю вспышку, которая в основном очень простой трекер. Мой вопрос о последовательном воспроизведении и, в частности, проблемах синхронизации.
Объект SoundChannel удобно предоставляет событие SoundCompleted, но полагаясь на это, вы получаете крошечные промежутки между звуками, что (к сожалению) делает его бесполезным.
Все, что мне удалось выкопать до сих пор, - это учебные пособия, использующие события, запускаемые каждую миллисекунду, и вручную отслеживание отметки, с которой начинается следующий звук. Это кажется немного хакерским и излишне расточительным.
Есть ли лучший способ для синхронизации звуков последовательно с воспроизведением без пауз?
2 ответа
Это может сработать, но тайм-ауты не зависят от частоты кадров или не совсем так. Как вы говорите, они срабатывают как можно ближе к установленному таймауту, но я обнаружил, что есть некоторые различия в точности в зависимости от частоты кадров.
Но что касается исходной проблемы, я провел некоторое исследование и ответил на него сам.
Если вы запросите текущее время звука (или оставшееся время) в миллисекундах, установите время ожидания для этого периода и начнете следующий звук в обработчике времени ожидания, будет ли это работать? Это не то, что я пробовал и нашел надежным, но обработчики тайм-аута будут вызываться настолько близко к прямому времени, насколько может управлять Flash Player (независимо от частоты кадров и т. Д.). Поэтому, если это не сработает, я не могу себе представить, что еще будет, если только это не будет какой-то вариацией в оценке того, сколько MS свободы требуется, и попыткой запустить следующий звук за 5 мс или еще до того, как запланирован текущий. конец.