Звук и ActionScript

Прикачване на звукови клипове и контролиране на възпроизвеждането

В нединамичните проекти записите се поставят директно на времевата линия и се манипулират. С други думи, ако искате саундтрак да звучи във вашия филм, трябва да го плъзнете от библиотеката на времевата линия и да посочите кога, колко дълго и колко пъти трябва да се възпроизвежда. За много проекти това е напълно достатъчно, но ние сме ActionScript - ние искаме да управляваме всичко! Следователно в това упражнение ще ви научим как да оставите вашите записи в библиотеката и да ги изтеглите оттам, ако е необходимо. Ще научите как да използвате още няколко метода на звукови обекти, за да добавяте и контролирате звукови записи към филма си, всички в движение.

Кое е най-страхотното в създадения от Flash звуков обект? Към него прикачете звуков запис, тоест "издърпайте" го от библиотеката и след това го възпроизведете и го спрете, когато пожелаете.

Но за да направите това, първо трябва да присвоите имена на идентификатори на звукозаписите в библиотеката. Ако записът има идентификатор, можете да го прикачите към звуков обект и след това да контролирате неговото възпроизвеждане, сила на звука и баланс, както направихме по-рано в този урок.

Да предположим например, че имате музикален звук във вашата филмова библиотека с идентификатора „rockMusic“. Със следния код можем динамично да го инжектираме в проекта и да контролираме възпроизвеждането:

Първият ред на този скрипт показва, че той ще бъде изпълнен, когато бъде освободен след щракване върху определен бутон, към който е прикрепен скриптът. Когато скриптът се изпълни, първо се създава нов звуков обект, наречен музика. След това саундтракът "rockMusic" (от библиотеката) е прикрепен към този обект. Следващият ред започва да възпроизвежда този звуков обект - това означава, че саундтракът "rockMusic" ще започне да се възпроизвежда (тъй като този е прикрепен към този обект). Първият параметър (0) в това действие показва колко секунди от началото на записа да пропуснете. Да предположим например, че има соло за китара в "rockMusic", започвайки от 20-ата секунда. Тогава, ако вместо 0 заместим 20, тогава възпроизвеждането на този запис няма да започне от самото начало, а директно от това китарно соло. Вторият параметър, който имаме равен на 5, показва колко пъти записът трябва да се повтори. В нашия случай звукозаписът ще се повтори пет пъти и едва след това ще спре.

Добавяме, че вместо конкретни стойности на параметрите можете да посочите имена на променливи, което отваря широки възможности.

В следващото упражнение ще ви покажем как да прикачите произволно избран звуков запис от библиотеката към звуковия обект и да започнете възпроизвеждането му, като щракнете върху бутона на мишката. Броят на повторенията на звукозаписа също ще бъде случаен. Освен това ще програмираме възможността за спиране на възпроизвеждането чрез натискане на който и да е клавиш на клавиатурата.

  1. Отворете файла basketball5.fla от папка Lesson16/Assets.

Ако не сте затворили файла след завършване на предишното упражнение, продължете да работите с него.

  1. Отворете панела „Библиотека“, като използвате командата „Прозорец> Библиотека“.

Библиотеката има папка, наречена Dynamic Sounds. В тази папка ще намерите три звукови записа, внесени в проекта. Тези звукови клипове съществуват само в библиотеката; те не присъстват в нито един от сроковете на проекта.

лекция

  1. Щракнете, за да изберете Звук 0. От менюто с опции на библиотеката изберете Връзка.

Отваря се диалоговият прозорец Свойства на връзката. Тук можем да присвоим идентификатор на име на звуковия клип .

  1. Поставете отметка в квадратчето Експортиране за ActionScript и дайте име на този звук Sound0.

звук

Забележка Вижте Урок 14 - Динамично управление на филмови символи за подробности относно настройките за този диалогов прозорец.

Поставяме число в края на името на клипа с причина. Нашият скрипт ще генерира произволни числа от 0 до 2. Ако 0 падне, звукозаписът Sound0 се възпроизвежда, ако 1 - Sound1, ако 2 - Sound2 .

След като присвоите идентификатор, щракнете върху OK.

  1. Повторете стъпки 3 и 4 за библиотечни клипове Sound 1 и Sound 2.

За Sound 1 задайте ID Sound1 и клип Sound 2 с ID Sound2 .

Забележка Обърнете внимание, че имената на части на библиотеката могат да съдържат интервали, но имената на идентификатори не могат. Когато задавате идентификатори, следвайте същите правила като за имена на променливи и обекти.

И така, сега имаме в папката на библиотеката Dynamic Sounds три звукови записа с идентификаторите Sound0, Sound1 и Sound2. Време е да ги използваме в скриптове.

  1. С избрания баскетболен клип отворете панела Действия. След реда на скрипта, който създава обекта за отскачане на звука, с който сме работили преди, вмъкнете следния ред:

Това създава нов звуков обект, наречен dynaSounds. Подобно на отскачащия обект, този звуков обект ще бъде създаден веднага щом баскетболният клип се зареди в сцената. Когато това се случи, нашият проект ще има два звукови обекта, единият от които контролира звука на подскачащата топка, а другият (току-що добавен) на случаен принцип ще избере и възпроизведе един от трите звука в библиотеката.

Имайте предвид, че когато създадохме този звуков обект, не го свързвахме с никаква времева линия. Новият ни звуков обект ще бъде свързан с целия проект - така да се каже, „универсален“, „общ“ звуков обект .

  1. В края на текущия скрипт добавете следните редове:

лекция

Скриптът се поставя в манипулатора на събитие 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. Ето трика:

  1. Определете максимално възможното генерирано число (да речем 500)
  2. Определете възможно най-малкото число (да речем 150)
  3. Извадете по-малкото число от по-голямото (в нашия пример получаваме 350)
  4. Добавете 1 към този резултат (351 в нашия пример). Това е необходима стъпка, тъй като функцията random () винаги има диапазон от генерирани числа, започващи от 0.
  5. Запишете крайния израз (в нашия пример това ще бъде изразът random (351) + 150, който генерира произволни числа от 150 до 500).

Двата произволни числа, генерирани от нашия скрипт, се използват в останалите два реда.

Това действие прикачва библиотечен звук към обекта dynaSounds, чието име (идентификатор) се получава чрез прикачване на стойност randomSound към низа Sound. Ако например randomSound е 2, тогава получаваме следното действие:

Всеки път, когато щракнете с мишката, ще се генерира ново произволно число и съответният нов звуков запис ще бъде прикрепен към звуковия обект.

И накрая, последният ред на скрипта възпроизвежда този звуков обект:

Това действие започва да възпроизвежда звукозаписа, който в момента е прикрепен към звуковия обект. Що се отнася до двата параметъра, 0 означава, че записът трябва да се възпроизвежда от самото начало, а стойността randomLoop определя броя на повторенията на записа (едно или две).

  1. В края на текущия скрипт добавете следните редове:

звук

Манипулаторът на събитието keyDown ще изпълни този ред на скрипта за изпълнение, когато натиснете произволен клавиш на клавиатурата. Изпълнението ще спре да възпроизвежда обекта Sound dynaSounds, без да чака да завърши.

  1. Използвайте командата Control> Test Movie, за да стартирате теста на филма.

Когато филмът се изпълни в тестовата среда, щракването навсякъде ще стартира произволно избран звук от библиотеката. Ако натиснете клавиш на клавиатурата сега, възпроизвеждането ще спре.

  1. Затворете тестовия филм и се върнете в средата за разработка. Запазете файла като basketball6.fla.

Това завършва нашия проект! Научихте как, чрез динамично управление на звука, да внесете допълнителен реализъм и по този начин да направите проекта по-красив и запомнящ се. Вече знаете почти всичко за управлението на звука, освен може би изтеглянето от външни източници - ще говорим за това в Урок 17, Зареждане на външни материали.