Дострочное пересдача экзамена
|
Звук и ActionScript
Знание принципов динамического управления звуком – ключ к созданию всего, от игр до собственных MP3-проигрывателей. В этом упражнении мы продемонстрируем возможности Flash по управлению звуком, имитируя звук, издаваемый баскетбольным мячом в спортзале.
Пользователь сможет перетаскивать мяч в пределах определенной области экрана; при этом будет соответствующим образом меняться громкость и баланс каналов (управляемые динамически). Кроме того, вы увидите, что Flash позволяет вводить в проект звукозаписи и управлять ими, не помещая их на монтажный стол в процессе разработки.
Что будет изучаться
В этом уроке:
- Создание объекта типа Sound
- Перетаскивание объекта в пределах обозначенных границ
- Управление громкостью объекта Sound
- Управление балансом каналов объекта Sound
- Помещение звукозаписей в фильм с помощью метода attachSound()
- Старт, остановка, зацикливание звукозаписей динамически
Когда мы завершим этот проект, этот баскетбольный мяч будет звучать, как настоящий.
Время выполнения
На выполнение этого урока требуется примерно полтора часа.
Файлы урока
Файлы-носители:
Нет
Стартовые файлы:
Lesson16/Assets/basketball1.fla
Законченные проекты:
basketball6.fla
Управление звуком при помощи ActionScript
Большинство людей просто слушает музыку, не задумываясь при этом, как и откуда берутся эти звуки. Однако все звуки, от самых простых до самых сложных, представляют собой акустические волны, а записываются они в виде электромагнитных колебаний, а представление их в компьютерном, цифровом виде еще сложнее – это сразу станет очевидно, достаточно взглянуть на системные требования, предъявляемые большинством продвинутых программ редактирования звука. Однако несмотря на всю внутреннюю сложность даже простенькой аудиозаписи, мы можем выделить три наиболее общие характеристики звука.
- Длительность. В жизни длительность звука, издаваемого объектом, может дать представление о его размере (сравните "бибиканье" легковушки и рев клаксона тяжелого грузовика) и значимости (маленький колокольчик и огромный колокол).
- Громкость. Громкость звука дает представление о расстоянии. Тихий звук – объект далеко, громкий – близко. Постепенное увеличение или уменьшение громкости говорит о движении объекта.
- Панорама. Панорама – баланс левого и правого каналов – говорит об относительном положении объекта. Если во время теннисного матча встать возле сетки и закрыть глаза, не составит труда точно определить, кто из игроков бьет по мячу в каждый момент.
Во Flash можно управлять этими звуковыми характеристиками, просто изменяя свойства звуковых объектов, размещенных на монтажном столе. Этого достаточно для тех случаев, когда воспроизведение звука происходит без участия пользователя. Если же возникает необходимость дать пользователю возможность управлять звуком в процессе воспроизведения, нужны решения динамические. К счастью, звукозаписями и их характеристиками можно без проблем управлять с помощью ActionScript.
Создание объекта Sound
Для того, чтобы управлять звуком динамически, необходимо использовать объект типа Sound. Важно запомнить, что каждый объект Sound в момент его создания ассоциируется с конкретным монтажным столом фильма. Так, для динамического управления звуком на главном монтажном столе необходимо создать объект Sound на главном монтажном столе. Чтобы управлять звуком в экземпляре клипа, следует создать объект Sound на монтажном столе этого экземпляра. Точно также объекты Sound управляют звуком и в фильмах, подгружаемых в уровни. Таким образом, Flash-проект может содержать много монтажных столов и несколько объектов Sound, каждый из которых управляет звуком на своем монтажном столе.
Примечание Хотя монтажный стол может содержать несколько наложенных звуковых "слоев", важно понимать, что когда на этом монтажном столе создается (и тем самым ассоциируется с ним) объект Sound, этот объект будет в равной мере управлять всеми звуками на этом монтажном столе. Это значит, что если для этого объекта Sound устанавливается уровень громкости 50, то для всех звуков во всех слоях громкость будет снижена наполовину.
Синтаксис создания объекта Sound несложен; выглядит это так:
soundObjectName = new Sound (Target);
Рассмотрим подробно. Здесь soundObjectName означает имя вашего нового объекта типа Sound. Имя можно дать любое, лишь бы оно было запоминающимся для вас и соответствовало общим правилам и ограничениям для имен объектов и переменных (это значит, что в имени не должно быть пробелов, знаков препинания, имя не должно начинаться с цифры). Конструкция new Sound () означает в ActionScript функцию - конструктор, создающую новый объект типа Sound. Вместо Target в скобках нужно подставить адресную ссылку на монтажный стол, с которым будет связан данный объект Sound.
Как только создан связанный с монтажным столом объект Sound, для управления свойствами звука (например, громкостью и балансом каналов) на этом монтажном столе следует ссылаться в скриптах на имя этого объекта Sound, а не на адрес или имя экземпляра монтажного стола.
Давайте рассмотрим пример. Мы создаем объект Sound для управления звуком в экземпляре клипа под названием myMovieClip:
mySound = new Sound ("_root.myMovieClip");
Теперь, когда у нас есть объект Sound, связанный с экземпляром клипа myMovieClip, мы можем воспользоваться методом setVolume(), чтобы динамически установить 50-процентный уровень громкости:
mySound.setVolume (50);
Как уже говорилось, цель учебного проекта этого урока – имитация звука баскетбольного мяча, прыгающего по площадке. В первом упражнении мы создадим объект типа Sound – это будет первый шаг к цели нашего проекта.
- Откройте файл basketball1.fla из папки Lesson16/Assets.
Этот файл состоит из двух слоев: Background и Ball. Слой Background содержит общее графическое оформление, в слое Ball находится изображение баскетбольного мяча. Этот мяч – экземпляр клипа, называется он, естественно, basketball. В нем и будут заложены все интерактивные возможности нашего проекта.
- Двойным щелчком на экземпляре клипа basketball откройте его для редактирования на месте.
Монтажный стол этого клипа состоит из трех слоев: Shadow, Graphic и Sound. Слои Graphic и Shadow содержат по паре анимаций, имитирующих падение и отскок мяча (Graphic – сам мяч, Shadow – его тень на полу). В слое Sound находится звукозапись удара мяча по полу. Звук начинается с кадра 5, то есть он будет раздаваться как раз в тот момент, когда изображение мяча касается пола.
На монтажном столе этого клипа нет действия stop(), и значит, он будет автоматически проигрываться раз за разом, изображая постоянно прыгающий мяч.
- Командой меню Редактировать > Править документ (Edit > Edit Document) вернитесь на основной монтажный стол.
Давайте же создадим объект Sound, связанный с экземпляром клипа basketball. Это позволит нам управлять громкостью и балансом каналов звука удара мяча по полу – в то время, как пользователь будет перетаскивать мяч по нашей "площадке".
- Откройте панель Действия, выделите экземпляр клипа basketball и введите такой скрипт:
onClipEvent (load) { bounce = new Sound (this); }
Поскольку этот скрипт присоединен к экземпляру клипа basketball, и значит, он будет выполнен, как только этот экземпляр загрузится (то есть впервые появится в сцене). Скрипт всего лишь содержит функцию, создающую новый объект Sound, имеющий имя bounce и связанный с этим ( this, то есть basketball ) монтажным столом. Звукозапись удара мяча находится на этом монтажном столе, и значит, управляя объектом bounce, мы сможем динамически менять громкость и баланс каналов этой звукозаписи.
Совет Создание объекта Sound с помощью обработчика события onClipEvent(load) – наиболее эффективный способ. Таким образом мы создаем объект Sound только после того, как управляемый им экземпляр загружен в сцену; это упрощает дальнейшую работу со скриптами и делает их понятнее.
- Командой Управление > Проверить фильм (Control > Test Movie) запустите просмотр фильма.
В нынешнем виде наш проект не выглядит особо динамичным. Перемещать мяч нельзя, и он уныло скачет на одном месте, издавая один и тот же звук. Ну, по ходу урока мы эту ситуацию исправим. Сейчас важно уяснить, что как только экземпляр-мяч появляется в сцене (а это происходит практически моментально после запуска), создается объект Sound. Ну, а звук не может измениться, пока мы не велим нашему новому объекту Sound сделать что-либо.
- Закройте тестовый фильм и вернитесь в среду разработки. Сохраните текущий файл под именем basketball2.fla.
Можете оставить файл открытым, поскольку с ним мы будем работать на протяжении всего урока.