Динамічне приєднання звуку

Вже добре знайомий нам метод attachMovie() служить для програмного перетягування екземпляра кліпу з бібліотеки на тимчасову діаграму існуючого кліпу. Подібні функції виконує метод attachSound() класу Sound. Він дозволяє включити звукову складову кліпу звук з бібліотеки.

Перш ніж застосувати метод attachSound(), звуку потрібно надати ідентифікатор програмного експорту. Робиться це так само, як у випадку кліпів або шрифтів.

1. Відкриваємо бібліотеку (F11), знаходимо рядок потрібного елемента та клацаємо по ній правою кнопкою миші. У контекстному меню вибираємо пункт Linkage. В результаті з'явиться вікно Linkage Properties.

2. Ставимо прапорець Export for ActionScript. При цьому буде доступний рядок Identifier. До неї вводимо текст ідентифікатора експорту. Це може бути будь-яка послідовність символів.

Єдине обмеження — ідентифікатор має бути унікальним.

3. Якщо ви використовуєте внутрішній завантажувач, бажано вимкнути завантаження звуку перед першим кадром. Для цього потрібно забрати прапорець Export in first frame. Синтаксис методу attachSound() набагато простіше, ніж у методу attachMovie():

• snd — об'єкт класу Sound, через який до приєднаного звуку буде доступ.

З одним об'єктом класу Sound може бути пов'язаний лише один динамічно приєднаний звук. При повторному застосуванні до нього методу attachSound() буде замінено пов'язаний з ним звук (проте якщо при цьому спочатку приєднаний звук програвався, його відтворення перервано не буде);

• "Id" — рядок з ідентифікатором програмного експорту звуку.

Для прикладу наведемо код, що «перетягує» звук наосновну часову діаграму і запуск його програвання:

var sound:Sound=new Sound(_root); sound.attachSound("snd"); sound.start();

Імпортований звук метод attachSound() має (умовно) на тій часовій діаграмі, до якої належить відповідний об'єкт класу Sound. Якщо об'єкт класу Sound глобальний (тобто він був створений без передачі конструктору параметра), то звук міститься на тимчасову діаграму, на кадрі якої знаходиться код.

У тому, що одночасно з одним об'єктом класу Sound може бути пов'язаний лише один звук, приєднаний за допомогою методу attachSound(), немає нічого дивного. У протилежному випадку неможливо було ввести в мову такі елементи, як, наприклад, властивість duration (повертає довжину звукового фрагмента) або метод start() (запускає відтворення звуку).

Всі ці елементи можуть бути застосовані лише до одного конкретного звуку. Якби з об'єктом класу Sound можна було зв'язати кілька програмно приєднаних звуків, то при використанні низки методів та властивостей часто виникала ситуація невизначеності. До речі, з цієї причини більшість властивостей і методів класу Sound не застосовні до звуків, поміщеним на тимчасову діаграму «вручну». Просто обмеження на кількість розміщених на кадрах звуків не існує, а дані методи та властивості можуть бути використані лише до одного конкретного звуку.

Більшість методів, властивостей та подій класу Sound (крім attachSound(), loadSound(), get-BytesLoaded(), getBytesTotal() та onLoad) можна розділити на дві групи. У першу входять інструменти, що впливають відразу на всі звуки, пов'язані з цим кліпом. Наприклад, метод setVolume() змінює гучність всіх звуків, що відносяться до кліпу (тобто як приєднаних«вручну», так і імпортованих динамічно через даний об'єкт класу Sound або через інші об'єкти, що посилаються на цей кліп). або loadSound()) звуку.

Наприклад, властивість position дозволяє дізнатися, яка частина звуку вже програлася. Відповідно, можливості програмного управління динамічно приєднаними звуками набагато ширші. Чітке розуміння відмінностей інструментів класу Sound, що належать до різних груп, є важливою умовою їх ефективного використання. За своїм типом звуки, що приєднуються за допомогою методу attachSound(), є, природно, подієвими, тобто процес їх програвання ніяк не залежить від розташування голівки, що відтворює, на тимчасовій шкалі або наявності інших звуків, що програються. Можна, наприклад, досягти ефекту луни, запустивши програвання одного й того самого звуку кілька разів поспіль через певний проміжок часу. Важливе різницю між звичайними подієвими звуками і приєднаними програмно у тому. що останні не прив'язані до якогось одного кадру. Запустити їх відтворення можна з будь-якого кадру, що програється після кадру, що містить код з attachSound().