Adobe - Flash - Платформа Изтегляне на външни звукови файлове
Flash Player 9 и по-нова версия, Adobe AIR 1.0 и по-нова версия
Всеки екземпляр на класа Sound е проектиран да зареди и започне да възпроизвежда конкретен аудио ресурс. Приложението не може да използва повторно обекта Sound, за да зареди друг звук. Ако приложението трябва да зареди нов ресурс, трябва да се създаде нов звуков обект.
Ако се зареди малък звуков файл, като например звук при щракване за бутон, приложението може да създаде нов звуков обект, така че автоматично да зареди аудио файла, както е показано по-долу.
Конструкторът Sound() приема обект URLRequest като първи параметър. Когато се подаде стойност за параметъра URLRequest, новият звуков обект автоматично започва да зарежда посочения аудио ресурс.
Във всички случаи, освен най-простите, приложението трябва да следи напредъка на изтеглянето и да проверява за грешки по време на изтеглянето. Например, ако звукът при щракване е достатъчно силен, той може да не се зареди напълно до момента, в който потребителят щракне върху бутона, който започва да възпроизвежда звука. Ако се опитате да възпроизведете незаредено аудио, може да възникне грешка по време на изпълнение. За да избегнете такива грешки, трябва да изчакате звукът да приключи зареждането, преди да позволите на потребителите да извършват действия, които могат да предизвикат възпроизвеждане на звуци.
Обектът Sound изпраща няколко различни събития по време на процеса на зареждане на звука. Приложението може да слуша тези събития, за да следи напредъка на изтеглянето и да позволи възпроизвеждане на аудио само след пълното изтегляне. Следващата таблица изброява събитията, които обектът Sound може да изпрати.
Изпратено точно преди звукът да започне да се зарежда.
Потеглямпериодично по време на аудио зареждане, когато се получават данни от файл или поток.
Изпраща се, когато ID3 данните са налични за mp3 аудио.
Изпраща се, когато зареждането на всички данни на аудио ресурса приключи.
Изпраща се, когато аудио файл не може да бъде намерен или когато процесът на изтегляне е прекъснат, преди да бъдат получени всички аудио данни.
Следният код демонстрира как да възпроизведете звук, след като приключи зареждането му.
Кодът първо създава нов звуков обект, без да предава оригиналната стойност за параметъра URLRequest. След това прослушва събитието Event.COMPLETE, което се изпраща от обекта Sound и задейства изпълнението на метода onSoundLoaded(), когато всички звукови данни приключат със зареждането. След това методът Sound.load() се извиква с новата стойност на параметъра URLRequest за аудио файла.
Методът onSoundLoaded() се изпълнява, след като звукът приключи със зареждането. Целевото свойство на обекта Event е препратка към обекта Sound. След това се извиква методът play() на обекта Sound, който стартира възпроизвеждането.
Проследяване на процеса на изтегляне на аудио
Звуковите файлове могат да бъдат много големи и да отнемат много време за зареждане. Въпреки че Flash Player и AIR позволяват звуците да започнат да се възпроизвеждат, преди изтеглянето да приключи, може да искате да кажете на потребителя колко аудио вече е изтеглено и каква част от него вече е възпроизведено.
Класът Sound изпраща две събития, които могат да се използват за показване на прогреса на зареждането на звука по относително прост начин: ProgressEvent.PROGRESS и Event.COMPLETE. Следващият пример демонстрира как да използвате тези събития за показване на информация за напредъка на изтеглянето на аудио.
Този код първо създава обект Sound и след това добавя слушатели за неговите събития ProgressEvent.PROGRESS иСъбитие.ЗАВЪРШЕНО . След извикването на метода Sound.load() и получаването на първите данни за аудио файла се изпраща събитието ProgressEvent.PROGRESS, което задейства метода onSoundLoadProgress().
Процентът на заредените звукови данни е равен на стойността на свойството bytesLoaded на обекта ProgressEvent, разделено на стойността на свойството bytesTotal. Същите свойства bytesLoaded и bytesTotal се прилагат за обекта Sound. Примерът по-горе ясно показва съобщения за прогрес за зареждане на звук, но стойностите на свойствата bytesLoaded и bytesTotal могат лесно да се използват за актуализиране на компоненти за прогрес, като тези, налични в средата на Adobe Flex или инструмента за създаване на Adobe Flash.