Ovládanie zvukov vo FLASH 5 v efektnom prevedení

1. prosince 2000

V dnešnom článku si popíšeme nové možnosti ovládania zvukov vo FLASH 5. Konkrétne sa bude jednať o ovládanie hlasitosti a balancie (vyváženosť ľavého a pravého kanála). Toto ovládanie je vyriešené pomocou špeciálnych zvukových funkcií, ktoré sa vyskytujú vo FLASH 5.

Vo FLASH 4 sme boli obmedzený pri ovládaní na to, že keď sme chceli zmeniť hlasitosť a balanciu tak sme museli danú zvukovú stopu spúšťať odznova. Čo už nebudeme musieť u FLASH 5, pretože zvuky sa dajú ovládať počas hrania. V nasledujúcich riadkoch si popíšeme nové  funkcie a vytvoríme si jeden príklad.

Ako prvá novinka, ktorú si iste hneď všimneme je možnosť výberu, importu zvukov. Okrem klasického formátu wav, je možnosť importovania aj formátu mp3. Výhodné je to najmä preto, že pri exporte nášho FLASHu sa daný zvuk nekompresuje, čo zrýchľuje čas pri exporte. Ale na druhú stranu je tu zase nevýhoda v tom, že s danou zvukovou vzorkou už nemôžeme ľubovoľne narábať. Nedá sa meniť kvalita exportu v nastaveniach. Ďalší negatívny faktor je, že musíme mať vzorku v mp3 a ak nie, tak si ju musíme prekonvertovať v nejakom MP3 kompresore.

Druhá zmena(pozitívna) nastála v tom, že si môžeme všetky vzorky označiť ako symboly. Každý sampel si pomocou špeciálnej voľby "linkage" (k knižnici)  môžeme zadefinovať ako symbol. Potom ho môžeme ľahko volať z actionscriptu.

Nové funkcie:

  • attachSound – pripojí zvuk do actionscipt argumenta
  • getPan – zistí aktuálnu hodnotu balancie. Rozsah -100 (Ľavý kanála) až 100 (Pravý kanál)
  • getVolume – zistí aktuálnu hodnotu hlasitosti. Rozsah 0 až 100.
  • setPan – nastaví, uloží hodnotu balancie.
  • setVolume – nastaví, uloží hodnotu hlasitosti.
  • getTransform – Zistí aktuálne hodnoty.
  • setTransform – nastaví, uloží špeciálne hodnoty hlasitosti a balancie zvuku. Tieto nastavenia sú určené pre profíkov. Pomocou tejto funkcie sa dá mono zvuk z modulovať do sterea a naopak. 

Príklad:

A teraz prejdeme na náš príklad, ktorého výrobu si teraz popíšeme. Ale ešte predtým ako začneme, by som chcel upozorniť na fakt, že tento príklad je určený pre mierne pokročilých uživateľov FLASHu, čiže isté skúseností vo FLASHi sú nevyhnutné. Tento príklad a jeho ovládanie je založené na 6tich tlačítkach a jednej posuvnej lište. Sú to klasické tlačítka ako play, stop, plus, mínus, vol a bal. Funguje to tak, že keď si odklineme ovládanie hlasitosti (vol), tak pomocou +, – a posuvnej lišty ovládame iba hlasitosť. Pri odkliknutí balancie(bal), tak ovládame iba balanciu, pričom hodnoty sa pri zmene ovládania hlasitosti a balancie zapíšu. To nám zaručí, že keď si napríklad nastavíme hlasitosť na 60 a potom prepneme na balanciu (zmeníme na 0), tak pri spätnom volaní sa posuvná lišta posunie na miesto z 60, čiže na hodnotu, ktorá bola zapísaná predtým .

Postup:

Vytvoríme si novú scénu s rozmermi 300 x 200 pixlov a frame rate nastavíme na 20. V scéne si vytvoríme nejaké jednoduché ovládanie s tlačítkami play, stop, +, -, vol a bal, v novej vrstve "top".

Vytvoríme si jedno textové pole, v novej vrstve "var", (dynamic text) a premennú(variable) dáme ako "text"(pomocou panela text options). Vrátime sa do vrstvy "top" a importneme si zvuk (File-> Import).

Otvoríme si knižnicu (Library, skratka ctrl-L) a pravým tlačítkom klikneme na náš zvuk a vybereme voľbu "Linkage". Vybereme "Export this symbol" a napíšeme ako chceme, aby sa volal náš zvuk. V našom prípade "zvuk"

Do prvého keyframu v scéne vložíme nalsedujúci kód:

zvuk = new Sound(); // keďže zvuk sa bere ako object, tak ho musíme najprv deklarovať
zvuk.attachSound("zvuk"); // pripojí do premennej zvuk, zvukovú stopu "zvuk"
setProperty („bar“, _visible, „0“); // skryje posuvnú lištu
stop ();

Ako sme si už spomínali, tak okrem tlačítok +,-, budeme môcť ovládať hlasitosť a balanciu aj posuvnou lištou, scrollbarom. Takže si v hlavnej scéne vytvoríme novú vrstvu "scroller". V tejto vrstve si vytvoríme nový movie clip "croll". A v instance ho nazveme "bar". V tomto movie clipe si vytvoríme MASK vrstvu. Do vrstvy, ktorá bude maskovaná vložíme ďalší movieclip s názvom a s instance menom "pohyb". V ňom vytvoríme našu scrolovaciu lištu a jeden button, ktorý bude slúžiť na preťahovanie (DRAG) tejto scrollovacej lišty. Do action na tento button vložíme kód:

on (press) { // po stisknutí myši
startDrag ("_root.bar.pohyb", false, -130, 0, 110, 0); // začni preťahovať scrollovaciu lištu
}
on (release) { // po pustení ľavého myšieho tlačítka
stopDrag (); // prestaň preťahovať scrollovaciu lištu
}

Vrátime sa späť na hlavnú scénu. Označíme si tlačítko play a vložíme do akcii nasledovný kód:

on (release) {
zvuk.stop(); //ak bežal zvuk už predtým, tak ho zastaví
zvuk.start(0,999); //spustí zvuk. Hodnota "0" nám udáva, koľko sekúnd pred ukončením je koniec. Napr. ak má stopa 4 sekundy, a my túto hodnotu nastavíme na 1, tak sa daná stopa bude hrať iba 3 sekundy. Potom sa buď preruší, alebo sa spustí odznova. Hodnota "999" je počet opakovaní (loopov).
setProperty ("bar", _visible, „1“); // zobrazí posuvnú lištu
a = „vol“; // aktivuje ovládanie hlasitosti
pan = „0“; //nastaví balanciu na 0, čiže zvuk pôjde zo stredu
vol = „100“; // nastaví hlasitosť na 100%
}

Spúšťanie zvuku by sme mali, teraz si urobíme jeho zastavenie. Do tlačítka stop vložíme nasledovný kód:

on (release) {
zvuk.stop();
}

Ešte predtým ako si spravíme ovládanie hlasitosti si vytvoríme nový movie clip s názvom "kontrol", ktorý bude mať za úlohu monitorovať a meniť hlasitosť a balanciu zvuku. Okrem toho bude ešte slúžiť aj na posúvanie scrollbaru a výpis aktuálnej hodnoty hlasitosti a balancie do textového poľa "text". Takže vytvoríme si v tomto movie clipe 2 frámiky a a do prvého vložíme nasledujúci kód:

if (_root.a eq "vol") // ak je vybratá voľba ovládanie hlasitosti
{
_root.vol = 10*(int((130 + (_root.bar.pohyb._x))/24)); // posunie scrollbar
_root.zvuk.setVolume(_root.vol); // nastaví hlasitosť
}

if (_root.a eq "pan") // ak je vybratá voľba ovládanie balancie
{
_root.pan = int((10 + _root.bar.pohyb._x)/12)*10; // posunie scrollbar
_root.zvuk.setPan(_root.pan); // nastaví balnaciu
}

_root.text = „Vol: “ add _root.vol add „% Bal: “ add _root.pan; // pridá text do textového poľa "text"

Do tlačítka vol vložíme nasledujúci kód:

on (release) {
if (a eq „pan“) { // zamedzuje duplicitným kliknutiam na vol, čiže sa spustí iba ak bola predtým ovládaná balancia
a = "vol"; // nastaví ovládanie hlasitosti
volb = (_root.bar.pohyb._x); //uloží pozíciu posledne nastavenej balancie 
setProperty ( _root.bar.pohyb, _x, vola); //ak je uložená pozícia hlasitosti, tak ju načíta a zmení polohu scrollbaru
}
}

Do tlačítka bal vložíme nasledujúci kód:

on (release) {
if (a eq „vol“) { // zamedzuje duplicitným kliknutiam na bal, čiže sa spustí iba ak bola predtým ovládaná hlasitosť
a = "pan"; // nastaví ovládanie balancie
vola = (_root.bar.pohyb._x); //uloží pozíciu posledne nastavenej hlasitosti 
setProperty ( _root.bar.pohyb, _x, volb); //ak je uložená pozícia balancie, tak ju načíta a zmení polohu scrollbaru
}
}

Do tlačítka + vložíme nasledujúci kód:

on (release, keyPress „+“) { // po kliknutí, alebo stlačení "+"
if (bar.pohyb._x < 110) // ak je x pozícia scrollbaru mensšia ako 110
{
xpohyb = (int (bar.pohyb._x/10))*10; // zistí aktuálnu polohu x pozície scrollbaru
setProperty (bar.pohyb, _x, xpohyb+10); // a posunie scrollbar o 10 dopredu
}
}

Do tlačítka „-“ vložíme nasledujúci kód:

on (release, keyPress „-„) { // po kliknutí, alebo stlačení "-"
if (bar.pohyb._x > -130) // ak je x pozícia scrollbaru mensšia ako -130
{
xpohyb = (int (bar.pohyb._x/10))*10; // zistí aktuálnu polohu x pozície scrollbaru
setProperty (bar.pohyb, _x, xpohyb-10); // a posunie scrollbar o 10 dozadu
}
}

To by bolo asi k tomuto príkladu všetko. Verím, že nasledujúci príklad bol pre vás poučný a že poznatky budete z neho úspešne využívať v ďaľšej tvorivej práci s FLASHom. Tak ako vždy aj dnes si môžete kompletný príklad stiahnuť tu.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *