Kada želiš da radiš sa audio fajlovima koristićeš
Sound i
SoundChannel klase koje su ti potrebne u ovom primeru. Pored ovih postoji još nekoliko koje ti za sada neće trebati. Prvo navodiš naziv fajla koji će se učitati, zatim kreiraš
Sound objekat. Dodaješ mu osluškivače događaja kako bi obezbedio da je pesmu moguće pustiti tek kada se ona uspešno učita. U suprotnom prikazaće se poruka o grešci. Kada se pesma učita dodaješ osluškivač dogadjaja tasteru čijim pritiskom želiš da se započne reprodukcija pesme. U kraćoj verziji kod izgleda ovako:
Code:
import flash.net.URLRequest;
import flash.media.Sound;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.IOErrorEvent;
var urlZahtev:URLRequest = new URLRequest("pesma.mp3");
var pesma:Sound = new Sound();
pesma.addEventListener(Event.COMPLETE, ucitanaPesma);
pesma.addEventListener(IOErrorEvent.IO_ERROR, greska);
function ucitanaPesma(event:Event):void
{
play_btn.addEventListener(MouseEvent.CLICK, pritisnutPlay);
}
pesma.load(urlZahtev);
function pritisnutPlay(event:MouseEvent):void
{
pesma.play();
play_btn.removeEventListener(MouseEvent.CLICK, pritisnutPlay);
}
function greska(event:IOErrorEvent):void
{
trace("Dogodila se greska. Pesma nije pronadjena.");
}
Na stage-u se nalazi taster sa nazivom instance "play_btn" i kada se pritisne pušta se pesma sa nazivom "pesma.mp3". U ovoj verziji ne postoji taster koji zaustavlja reprodukciju već se pesma sama zaustavlja jednom kada stigne do kraja. Da bi omogućio potpuno zaustavljanje pesme u bilo kom trenutku možeš koristiti dužu verziju koda:
Code:
import flash.net.URLRequest;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.IOErrorEvent;
var urlZahtev:URLRequest = new URLRequest("pesma.mp3");
var pesma:Sound = new Sound();
var kanal:SoundChannel = new SoundChannel();
pesma.addEventListener(Event.COMPLETE, ucitanaPesma);
pesma.addEventListener(IOErrorEvent.IO_ERROR, greska);
stop_btn.visible = false;
var pozicija:Number = 0;
function ucitanaPesma(event:Event):void
{
play_btn.addEventListener(MouseEvent.CLICK, pritisnutPlay);
}
pesma.load(urlZahtev);
function pritisnutPlay(event:MouseEvent):void
{
kanal = pesma.play(pozicija);
play_btn.visible = false;
stop_btn.visible = true;
stop_btn.addEventListener(MouseEvent.CLICK, pritisnutStop);
addEventListener(Event.ENTER_FRAME, pozicijaPesme);
play_btn.removeEventListener(MouseEvent.CLICK, pritisnutPlay);
}
function pritisnutStop(event:MouseEvent):void
{
kanal.stop();
stop_btn.visible = false;
play_btn.visible = true;
play_btn.addEventListener(MouseEvent.CLICK, pritisnutPlay);
stop_btn.removeEventListener(MouseEvent.CLICK, pritisnutStop);
removeEventListener(Event.ENTER_FRAME, pozicijaPesme);
}
function greska(event:IOErrorEvent):void
{
trace("Dogodila se greska. Pesma nije pronadjena.");
}
function pozicijaPesme(event:Event):void
{
pozicija = kanal.position;
}
Ovde se koristi i
SoundChannel klasa koja nam omogućava veću kontrolu nad zvukom. Pored toga dodat je još jedan taster "stop_btn" čijim se pritiskom zaustavlja reprodukcija. On se nalazi na istom mestu kao i "play_btn" taster ali je nevidljiv. Kada se pritisne "play_btn" on se sakriva tako da "stop_btn" postaje vidljiv i samim tim je omogućena i njegova funkcionalnost. Kada se pritisne on postaje nevidljiv i opet postaje aktivan "play_btn" taster. U ovom primeru kada bi se ovaj taster pritisnuo pesma bi nastavila reprodukciju od pozicije gde je bila zaustavljena. To postižeš korišćenjem
position svojstva
SoundChannel klase. Svakim ulaskom na frejm povećava se broj koji prestavlja poziciju pesme, a kada se reprodukcija zaustavi u promenljivoj "pozicija" nalaziće se broj koji predstavlja poziciju pesme, koji će se koristiti za nastavak reprodukcije.
Pogledajte odličnu knjigu ActionScript 3.0: Visual QuickStart Guide na Safari Books Online unošenjem kupon koda TPJVJGA:
https://ssl.safaribooksonline.com/safarienabled
Obavezno pogledati besplatan tutorijal "Installing Apache, MySQL, and PHP" na lynda.com:
http://www.lynda.com/MySQL-5-t...che-mysql-and-php/77958-2.html