Опубликован: 07.11.2006 | Доступ: свободный | Студентов: 3402 / 339 | Оценка: 3.94 / 3.71 | Длительность: 37:11:00
Лекция 15:

Аудио

< Лекция 14 || Лекция 15: 1234 || Лекция 16 >

Отключение звука

Кнопка управления звуком представляет собой переключатель, используемый для включения и выключения фоновой музыки.


Этот символ (становится видимым сразу после загрузки фоновой музыки - помните код, с которым мы недавно имели дело?) является двухкадровым фильмом. В кадре 1 находится рисунок, означающий воспроизведение звука, а второй кадр содержит рисунок, соответствующий отключенному звуку.



Код, управляющий рисунками и звуком, находится целиком в кадре 1 корневой временной шкалы.

soundcontrol._visible = false; 
soundcontrol.onRelease = function() { 
  if (_root.soundPlay == true) { 
    _root.backing.stop(); soundcontrol.gotoAndStop(2); 
    _root.soundPlay = false; 
  } else if (_root.soundPlay == false) { 
    _root.backing.start(0, 999); 
    soundcontrol.gotoAndStop(1); 
    _root.soundPlay = true; 
  } 
};

Вы могли заметить, что этот код похож на код для кнопки воспроизведения/паузы, использованный в одном из упражнений с видеоданными в предыдущей лекции. Мы проверяем состояние soundPlay (установлена в предыдущем упражнении) и в зависимости от результата:

  • звук отключается или начинает воспроизводиться;
  • временная шкала фильма передается для отображения альтернативного рисунка;
  • переменная soundPlay переключается и становится готовой для следующего нажатия.

Обратите внимание на строку кода _root.backing.start(0, 999);. Я зверским образом заставил пользователей слушать эту музыку 999 раз!

Хорошим продолжением начатого в данном случае было бы предоставление пользователю регулятора громкости. Это делается с помощью метода setVolume, при этом громкость звука разбивается на уровни от 0 до 100 (100 является громкостью по умолчанию). Ниже показано, как уменьшить громкость звука вдвое.

mySoundObject.setVolume (50);

Мы затронули лишь то, что можно сделать применительно к аудиоданным на вашем сайте. Раздел загрузки показывает, насколько легко можно добавлять звуковые файлы MP3 на сайт в интернетe, чтобы пользователь мог прослушивать их в потоковом режиме. Рассмотрев фоновый звуковой файл, мы показали, как можно реализовать непрерывное воспроизведение звука во всех разделах сайта, а также динамическую загрузку изображения JPEG. Представьте себе, насколько интересным может быть ваш сайт, если скомбинировать различные подходы с правильно подобранной музыкой!

Подведем итоги

Итак, вы узнали, что методы динамической загрузки во Flash открывают новые возможности для веб-дизайна. Неоспоримым преимуществом здесь является то, что пользователю не нужны какие-либо другие надстройки, поэтому не имеет значения, установлены ли у них программы Real Player, Windows Media или QuickTime; повсеместно распространенная надстройка Flash теперь может реализовывать очень многие возможности. Неплохо для надстройки, размер которой составляет лишь 746K для Mac и всего 383K для PC.

Рассмотрим весь материал, использованный нами на сайте Flatpack:

Для начала можно загрузить 10 различных фонов. Если сохранить их внутри FLA, это добавит до 171K. Далее мы имеем дело с обложками альбомов и фотодневником, в которых содержатся регулярно обновляемые изображения (в фотодневнике - ежедневно). Во Flash 5 нужно было открывать файл Flash и заново импортировать каждое изображение с последующим повторным экспортом и загрузкой SWF. Представьте, что это нужно проделывать с дневником тура каждый день! Наш подход намного проще. Любой пользователь с базовыми знаниями об оптимизации JPEG и загрузке сможет обновлять сайт.

В разделе с видеоданными видеофильм Banthafodder доступен для просмотра как в формате для низкоскоростных соединений, так и в высококачественном формате для соединений с высокими скоростями. Размеры версий фильма соответственно равны 264Kб и 2,2 Мб, поэтому, в случае непосредственного использования этих файлов в SWF в виде части главной страницы, загрузка сайта резко замедлялась бы. Видеодневник по своей работе похож на фотодневник, причем каждый фильм имеет размер около 150Kб. Видеомикшер занимает 232Kб, а калейдоскоп SWF имеет размер 108Kб. В целом, размер всего видеосодержимого был уменьшен благодаря эффективности Sorensen Spark, однако все же равен 2,6 Мб.

Наконец, Flash может осуществлять импорт MP3-файлов тогда и так, как это требуется. Если бы мы напрямую добавили на сайт все звуковые файлы, это прибавило бы к имеющемуся размеру еще порядка 8 Мб. Очевидно, что если бы вы поместили все это в один файл SWF, никто бы не дождался их загрузки, и были бы чрезвычайно расстроены, будучи заинтересованными в тематике сайта! Однако здесь пользователи могут выбирать, какие файлы MP3 они хотят прослушать на сайте и загружать их. В предыдущих версиях Flash, при необходимости импортировать MP3-файлы, нужно было добавлять их во Flash и кодировать их в виде SWF. Этот метод приемлем, однако он подразумевает, что каждый, кто будет обновлять сайт, должен иметь Flash и соответствующие знания о его использовании, а не только возможность использования iTunes!

Итак, мы создали сайт размером всего лишь 24Kб, так как он не содержит картинок, видео или звуковых данных при загрузке. Общий размер динамического медиа-содержимого равен 10 Мб - максимум возможностей при минимуме загружаемого объема.

< Лекция 14 || Лекция 15: 1234 || Лекция 16 >
Игорь Хан
Игорь Хан

у меня аналогичная ситуация. Однако, если взять пример из приложения (ball_motion_04_click for trial.fla) то след остается. при этом заметил, что в моем проекте в поле "One item in library" виден кружок, в то время как в приложенном примере такого кружка нет.

Вопрос знатокам, что не так?

Александр Коргапольцев
Александр Коргапольцев

объект созданый мной упорно не желает оставлять след(единственное что добился, так это то что шарик резво гоняется за курсором) функция duplicateMovieClip остаётся не активной, т.е. следа от объекта не остаётся, но если я тоже самый код вбиваю в учебный файл всё работает, не могу понять где я ошибаюсь и почему в документе созданном заново, не работает код начиная от функции duplicateMovieClip?