Опубликован: 04.11.2006 | Уровень: специалист | Доступ: платный
Урок 17:

Загрузка внешних материалов

< Урок 16 || Урок 17: 12345678

Загрузка mp3 динамически

В наши дни формат MP3 распространился повсюду. Популярность его объясняется тем, что он явился первым приемлемым способом распространения аудио (особенно музыки) во всемирной паутине даже при относительно медленных модемных соединениях. Но все же, хоть MP3 в несколько раз компактнее обычного, несжатого аудио, даже один-единственный MP3-файл может раздуть файл фильма до совершенно неприемлемых размеров.

Flash, однако, позволяет эту проблему смягчить при помощи загрузки MP3-файлов в фильм динамически. Как вы вскоре убедитесь, процедура загрузки в проект внешнего MP3 файла хоть и отличается от загрузки внешних фильмов и JPG, столь же проста.

Чтобы загрузить MP3 во Flash? Нужно первым делом подготовить для него место. Нужен объект типа Sound:

myFavMP3 = new Sound();

Как только объект Sound создан, в него можно загрузить внешний MP3, применив метод loadSound():

myFavMP3.loadSound("mySong.mp3", true);

Этой строкой внешний MP3-файл под названием mySong.mp3 будет загружен в объект типа Sound myFavMP3. А как только этот MP3 будет загружен, вы сможете управлять его громкостью, балансом каналов и прочими характеристиками (см. Урок 16 – Звук и ActionScript). Обратите внимание, метод loadSound() имеет два параметра: первый – путь к внешнему MP3-файлу, второй определяет, будет ли загружаемый файл потоковым ( true ) либо он будет рассматриваться как звук-событие ( false ). Если второй параметр равен true, то воспроизведение начнется немедленно, как только загрузится достаточная часть файла. Если false, то для запуска воспроизведения нужно будет вызвать метод start():

myFavMP3.start();

Примечание Если файл загружается как событие, его проигрывание не начнется (даже с помощью метода start() ) до тех пор, пока он не загрузится целиком.

В этом упражнении мы дадим каждой из загружаемых в слайд-шоу картинок свое звуковое сопровождение, которое будет загружаться динамически.

  1. Откройте файл virtualaquarium6.fla из папки Lesson17/Assets.

Это тот самый файл, над которым мы поработали в предыдущем упражнении. В этом упражнении мы добавим несколько строк в скрипт кадра 1.

Прежде чем взяться за это дело, давайте еще раз заглянем в директорию, где хранятся наши внешние материалы.

  1. В своем файловом менеджере откройте папку Lesson17/Assets.

Найдите три файла MP3 и запомните их имена:

  • music0.mp3
  • music1.mp3
  • music2.mp3
  1. Вернитесь во Flash. Открыв панель Действия, выделите кадр 1 слоя Actions и модифицируйте массив slides следующим образом:
slides = new Array (["Shark", "image0.jpg", "music0.mp3"], 
["Jellyfish", "image1.jpg", "music1.mp3"], 
["Seahorse", "image2.jpg", "music2.mp3"]);

Как видите, мы добавили в каждый элемент массива путь к одному из MP3-файлов.

Теперь нам нужно изменить функцию changeSlide() (мы создали ее в одном из предыдущих упражнений), чтобы она могла использовать новые данные.

  1. Внутрь оператора if в описании функции changeSlide() добавьте следующие строки:
slideSound.stop();
slideSound = new Sound();
slideSound.loadSound(slides[number][2], true);

Вы, полагаю, помните, что функция changeSlide() у нас загружает в фильм новые JPG-картинки. Какая именно картинка загружается – зависит от значения number, передаваемого функции в качестве параметра. Это значение определяет, какие имена функция "достанет" из массива slides. Теперь, когда мы добавили пути к MP3-файлам в массив и три новые строки в функцию, возможности ее расширились: теперь она будет загружать не только картинку, но и соответствующий ей MP3-файл.

Первое действие останавливает воспроизведение объекта Sound slideSound – при первом вызове функции это действие будет проигнорировано, так как этот объект создается только в следующей строке. Это действие stop() нужно для того, чтобы перед загрузкой в объект новой звукозаписи остановить воспроизведение старой, иначе они "сольются".

Следующая строка как раз создает новый объект типа Sound под именем slideSound. Объект будет "пересоздаваться" при каждом вызове функции changeSlide().

Следующая строка, с помощью метода loadSound(), загружает в объект Sound внешний MP3-файл. Значение параметра number определяет, какой именно файл (путь к которому содержится в элементе массива slides ) следует загрузить. Второй параметр указывает, что загружаемый файл следует воспроизводить потоком – следовательно, проигрывание начнется, как только загрузится достаточный объем данных.

Мы просто расширили возможности функции, а вызов ее запрограммировали еще ранее, так что загрузка и воспроизведение звука стартует почти сразу после начала фильма.

  1. Выполните команду Управление > Проверить фильм (Control > Test Movie).

Как только запустится фильм, на центральной панели появится картинка, а вместе с этим начнется загрузка и воспроизведение соответствующего музыкального файла. Если вы, нажав правую кнопку-стрелку, перейдете к следующей картинке слайд-шоу, сменится также и музыка.

  1. Закройте тестовый фильм. Сохраните файл под именем virtualaquarium7.fla.

Это упражнение закончено. Файл можно не закрывать, мы продолжим работу с ним в следующем упражнении.

< Урок 16 || Урок 17: 12345678
Салтанат Бектегенова
Салтанат Бектегенова

Дострочное пересдача экзамена

 

Евгений Стародубцев
Евгений Стародубцев

Вот задание:

7. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт:

Евгения Дегтяренко
Евгения Дегтяренко
Украина, Запорожье
Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003