Adobe - Flash - Platform Завантаження зовнішніх звукових файлів
Flash Player 9 і пізніших версій, Adobe AIR 1.0 та пізніших версій
Кожен екземпляр класу Sound призначений для завантаження та запуску відтворення певного аудіоресурсу. Програма не може повторно використовувати об'єкт Sound для завантаження іншого звуку. Якщо програмі потрібно завантажити новий ресурс, потрібно створити новий об'єкт Sound.
Якщо завантажується невеликий звуковий файл, наприклад звук клацання для кнопки, програма може створити новий об'єкт Sound, щоб він автоматично завантажив аудіофайл, як показано нижче.
Конструктор Sound() приймає як перший параметр об'єкт URLRequest. Коли значення параметра URLRequest передається, новий об'єкт Sound автоматично починає завантаження вказаного аудіоресурсу.
У всіх випадках, крім найпростіших, програма повинна контролювати прогрес завантаження та відстежувати помилки під час її виконання. Наприклад, якщо звук клацання має досить великий розмір, він може не завантажитись повністю до того моменту, як користувач натисне кнопку, яка запускає відтворення звуку. При спробі відтворити незавантажений звук може виникнути помилка виконання. Щоб уникнути таких помилок, слід дочекатися завершення завантаження звуку, перш ніж дозволяти користувачам виконувати дії, в результаті яких може початися відтворення звуків.
Об'єкт Sound відправляє кілька різних подій під час завантаження звуку. Програма може прослуховувати ці події, щоб відстежувати прогрес завантаження та дозволяти відтворення звуку тільки після повного завантаження. У наступній таблиці перелічені події, які можуть надсилати об'єкт Sound.
Надсилається безпосередньо перед початком завантаження звуку.
Вирушаєперіодично під час завантаження звуку в міру отримання даних із файлу або потоку.
Надсилається, коли для звуку у форматі mp3 доступні дані ID3.
Надсилається після завершення завантаження всіх даних аудіоресурсу.
Надсилається, коли не вдається знайти аудіофайл або коли процес завантаження переривається до отримання всіх аудіоданих.
Наступний код показує відтворення звуку після завершення його завантаження.
Спочатку код створює новий об'єкт Sound, не передаючи вихідного значення для параметра URLRequest. Потім прослуховується подія Event.COMPLETE, яка відправляється об'єктом Sound і запускає виконання методу onSoundLoaded() після завершення завантаження всіх звукових даних. Далі викликається метод Sound.load() з новим значенням параметра URLRequest для аудіофайлу.
Метод onSoundLoaded() виконується після завершення завантаження звуку. Властивість target об'єкта Event є посиланням на об'єкт Sound. Після цього викликається метод play() об'єкта Sound, який запускає відтворення.
Відстеження процесу завантаження звуку
Звукові файли можуть бути дуже великими і вимагатиме багато часу на завантаження. Хоча програвачі Flash Player та AIR дозволяють починати відтворення звуків ще до завершення завантаження, можливо, користувачеві потрібно повідомити, скільки аудіоданих вже завантажено і скільки вже відтворено.
Клас Sound відправляє дві події, за допомогою яких можна відносно просто відображати прогрес завантаження звуку: ProgressEvent.PROGRESS та Event.COMPLETE. У цьому прикладі показано використання цих подій для відображення відомостей про прогрес завантаження звуку.
Цей код спочатку створює об'єкт Sound, а потім додає прослуховувачі для його подій ProgressEvent.PROGRESS таEvent.COMPLETE. Після виклику методу Sound.load() та отримання перших даних аудіофайлу відправляється подія ProgressEvent.PROGRESS, яка запускає метод onSoundLoadProgress().
Відсоток завантажених звукових даних дорівнює значенню властивості bytesLoaded об'єкта ProgressEvent, поділеному на значення властивості bytesTotal. Ті ж властивості bytesLoaded і bytesTotal є і у об'єкта Sound. Наведений вище приклад наочно показує повідомлення про хід завантаження звуку, але значення властивостей bytesLoaded і bytesTotal можна легко використовувати для оновлення компонентів ходу виконання, таких як компоненти, доступні в середовищі Adobe Flex або інструменті розробки Adobe Flash.