НОУ ІНТУІТ, Лекція, Звук та ActionScript
Приєднання звукових кліпів та керування програванням
У нединамічних проектах звукозаписи розміщуються безпосередньо на монтажний стіл, і ним керуються. Іншими словами, якщо ви хочете, щоб у фільмі звучав звукозапис, ви повинні перетягнути його з бібліотеки на монтажний стіл і позначити, коли, як довго і скільки разів він повинен відтворюватися. Для багатьох проектів цього цілком достатньо, але ми з вами ActionScript 'єри – ми хочемо керувати всім! І тому в цій вправі ми навчимо вас, як залишити звукозаписи в бібліотеці та викликати їх звідти при необхідності. Ви дізнаєтеся про застосування ще кількох методів об'єкта Sound, що дозволяють додавати звукозаписи до фільму та керувати їх відтворенням, причому все це – "на льоту".
Що саме чудове, що можна зробити зі створеним у Flash об'єктом типу Sound? Приєднати до нього звукозапис, тобто "витягнути" його з бібліотеки, і надалі відтворювати його і зупиняти, коли заманеться.
Але для цього спочатку необхідно призначити бібліотечним звукозаписам імена-ідентифікатори. Якщо звукозапис має ідентифікатор , його можна приєднати до об'єкта Sound, а потім керувати його відтворенням, а також гучністю та балансом, як ми робили раніше в цьому уроці.
Наприклад, припустимо, що в бібліотеці фільму є музичний звукозапис з ім'ям-ідентифікатором "rockMusic". За допомогою наступного коду ми можемо динамічно впровадити її в проект та керувати відтворенням:
Перший рядок цього скрипта показує, що він буде виконуватися, коли відпущена після натискання деяка кнопка, до якої приєднаний скрипт. При виконанні скрипта спочатку створюється новий об'єкт типу Sound під ім'ям music. Потім до цього об'єктуприєднується звукозапис "rockMusic" (з бібліотеки). Наступний рядок починає програвання цього об'єкта Sound – це означає, що розпочнеться відтворення звукозапису "rockMusic" (оскільки саме він приєднаний до цього об'єкта). Перший параметр (0) у цій дії показує, скільки секунд від початку звукозапису слід пропустити. Наприклад, припустимо, що "rockMusic" є гітарне соло, що починається на 20-й секунді. Тоді якщо замість 0 ми підставимо 20, то відтворення цього запису почнеться не від початку, а з цього гітарного соло. Другий параметр , який ми дорівнює 5, показує, скільки разів слід повторити відтворення записи. У нашому випадку звукозапис буде повторений п'ять разів, і лише після цього зупиниться.
Додамо, що замість конкретних значень параметрів можна вказувати імена змінних, що відкриває найширші можливості.
У наступній вправі ми покажемо, як приєднати до об'єкта Sound випадково вибраний з бібліотеки звукозапис і запустити його відтворення натисканням кнопки миші. Число повторів звукозапису теж буде випадковим. Крім того, ми запрограмуємо можливість зупинення відтворення, натиснувши будь-яку клавішу на клавіатурі.
- Відкрийте файл basketball5.fla з папки Lesson16/Assets.
Якщо ви не закрили файл після виконання попередньої вправи, продовжуйте працювати з ним.
- Командою меню Вікно > Бібліотека (Window & Library) відкрийте панель Бібліотека (Library).
У бібліотеці є папка під назвою Dynamic Sounds. У цій папці ви знайдете три звукозаписи, імпортовані до проекту. Ці звукові кліпи існують лише у бібліотеці; на жодному з монтажних столів проекту вони не присутні.

- Клацанням мишіперейдіть до звуку Sound 0. У меню опцій бібліотеки виберіть пункт Зв'язок (Linkage).
Відкриється діалогове вікно Властивості зв'язку (Linkage Properties). Саме тут ми можемо присвоїти звуковому кліпу ім'я-ідентифікатор .
- Встановіть прапорець Експорт для ActionScript (Export for ActionScript) і дайте цьому звукозапису ім'я Sound0.

ПриміткаДетально про налаштування цього діалогового вікна розказано в Уроці 14 - Динамічне управління фільмами-символами.
Ми поставили наприкінці імені кліпу цифру не так. Наш скрипт генеруватиме випадкові числа від 0 до 2. Якщо випаде 0, програється звукозапис Sound0, якщо 1 – Sound1, якщо 2 – Sound2.
Надавши ідентифікатор , натисніть кнопку OK.
- Повторіть кроки 3 та 4 для бібліотечних кліпів Sound 1 та Sound 2.
Аудіокліпу Sound 1 надайте ідентифікатор Sound1 , а кліпу Sound 2 – ідентифікатор Sound2 .
ПриміткаЗверніть увагу, що імена бібліотечних елементів можуть містити пробіли, а імена-ідентифікатори – ні. Призначаючи ідентифікатори, дотримуйтесь тих самих правил, що й для імен змінних та об'єктів.
Отже, тепер у бібліотечній папці Dynamic Sounds маємо три звукозаписи з ідентифікаторами Sound0, Sound1 і Sound2 . Час використовувати їх у скриптах.
- Виділіть екземпляр кліпу basketball, відкрийте панель Дії. Після рядка скрипта, який створює об'єкт Sound bounce, з яким ми раніше працювали, вставте наступний рядок:
Цим ми створюємо новий об'єкт Sound під назвою dynaSounds. Як і об'єкт bounce, цей об'єкт Sound буде створений, як тільки екземпляр кліпу basketball буде завантажений у сцену. Коли це станеться, у нашому проекті буде два об'єкти типу Sound, один з якихкерує звуком м'яча, що скачає, а інший (тільки що доданий) буде випадковим чином вибирати і відтворювати один з трьох бібліотечних звуків.
Зверніть увагу, що, створюючи цей об'єкт Sound, ми не пов'язали його з монтажним столом. Наш новий об'єкт Sound буде асоційований з усім проектом - так би мовити, "універсальний", "загальний" об'єкт Sound.
- До кінця поточного скрипта додайте наступні рядки:

Скрипт поміщений в обробник події mouseDown і тому буде виконаний, якщо кнопка миші буде натиснута (у будь-якому місці сцени). Ось що скрипт робить:
По-перше, дія random (3) генерує випадкове число від 0 до 2 і надає його змінної randomSound . Далі це випадкове число визначатиме, який із бібліотечних звукозаписів буде приєднано до об'єкта Sound dynaSounds і потім програно.
У наступному рядку нашого скрипта надається значення змінної randomLoop - теж на основі випадкового числа. Це значення визначатиме, скільки разів має бути відтворено звукозапис. Зверніть увагу: тут змінній надається не просто випадкове число – ми до нього ще додаємо одиницю. Якщо цього зробити, дія random (2) видасть 0 чи 1. Присвоїти змінної randomLoop значення 0 ми можемо – не можна програти звукозапис " нуль разів " . Тому ми додаємо 1, і тепер змінна отримуватиме значення 1 (0+1) або 2 (1+1); таким чином, звукозапис програватиметься або один раз, або двічі.
Важлива порадаЦей прийом можна використовувати щоразу, коли випадкове число має знаходитися всередині якогось діапазону, що починається не з нуля. Наприклад, вираз random (51) + 50; генеруватиме випадкові числа від 50 до 100. Ось у чому суть фокусу:
- Визначити максимально можливе число, що генерується (скажімо, 500)
- Визначити найменшу можливу кількість (скажімо, 150)
- Відняти менше число з більшого (у нашому прикладі отримаємо 350)
- Додайте до цього результату 1 (у нашому прикладі буде 351). Це необхідний крок, оскільки у функції random () діапазон чисел, що генеруються, завжди починається з 0.
- Запишіть остаточний вираз (у нашому прикладі це буде вираз random (351) + 150, що генерує випадкові числа від 150 до 500).
Згенеровані нашим скриптом два випадкових числа використовуються в двох рядках, що залишилися.
Ця дія приєднує до об'єкта dynaSounds бібліотечний звукозапис, ім'я (ідентифікатор) якого виходить в результаті приєднання до рядка "Sound" значення randomSound. Якщо, наприклад, randomSound дорівнює 2, то ми отримаємо таку дію:
При кожному натисканні мишею буде генеруватися нове випадкове число і до об'єкта Sound приєднуватиметься відповідний новий звукозапис.
Нарешті останній рядок скрипта відтворює цей об'єкт Sound :
Ця дія запускає програвання поточного приєднаного до об'єкта Sound звукозапису. Що стосується двох параметрів, то 0 означає, що запис повинен відтворюватися з самого початку, а значення randomLoop визначає число повторень запису (один раз чи два).
- До кінця поточного скрипта додайте наступні рядки:

Обробник події keyDown запускатиме на виконання цей рядок скрипта – при натисканні будь-якої клавіші на клавіатурі. Виконання ж призведе до зупинки відтворення об'єкта Sound dynaSounds , не чекаючи, коли вона завершиться.
- Командою Управління > Перевірити фільм (Control > Test Movie)запустіть тест фільму.
Коли фільм запуститься у середовищі тестування, клацання мишею у будь-якому місці призведе до запуску випадково вибраного звукозапису з бібліотеки. Якщо натиснути клавішу на клавіатурі, відтворення буде припинено.
- Закрийте тестовий фільм і поверніться у середу розробки. Збережіть файл під ім'ям basketball6.fla.
На цьому наш проект завершено! Ви дізналися, як, керуючи звуком динамічно, привнести додатковий реалізм, і тим самим зробити проект красивішим і незабутнім. Ви тепер знаєте про керування звуком майже все, крім хіба що завантаження із зовнішніх джерел – про це ми розповімо в Уроці 17, Завантаження зовнішніх матеріалів.