Skrypt korzysta z listy plików MP3, które są zawarte w zewnętrznym pliku XML. Plik XML posiada atrybuty dla każdego wpisu takie jak: nazwa, autor oraz ścieżka dostępu. Flash pobiera te informacje oraz rozpoczyna automatycznie odtwarzanie pierwszego w kolejności utworu. Skrypt posiada funkcje pauzy, przycisku następny/poprzedni utwór i wyświetla tytuł oraz autora aktualnie granej piosenki.
Jeśli przeczytaliscie już artykuły o dwóch wcześniejszach odtwarzaczach Flash (wersja podstawowa oraz standardowa), to nie będziecie mieli żadnych problemów ze zrozumieniem kodu i w tym skrypcie, za wyjątkiem kodów dotyczących XML. Te trudniejsze części zostały wyjaśnione w formie komentarzy.
UWAGA!
Aby kod działał poprawnie należy umieścić 4 przyciski o nazwach instancji: pause_mc, play_mc, next_mc, prev_mc oraz jedno pole dynamiczne o nazwie instancji pole_txt .
Listing
<?xml version="1.0" encoding="iso-8859-2"?>
<utwory>
<muzyka autor="demo1" tytul="tytul1" path="music1.mp3"/>
<muzyka autor="demo2" tytul="tytul02" path="music2.mp3"/>
</utwory>
//kod action script w pierwszej klatce filmu
muzyka = new Sound();
autor = new Array();
tytul = new Array();
path = new Array();
id = new Array();
number = 0;
_root._soundbuftime = 20;
pole_txt.autoSize = true;
//tworzenie obiektu, który odczyta XML plik
xmlData = new XML();
//ignorowanie białych znaków
xmlData.ignoreWhite = true;
//zdarzenie wywoła funkcje loadXML jeśli plik zostanie załadowany do filmu
xmlData.onLoad = loadXML;
//ładowanie pliku xml o nazwie lista.xml
xmlData.load("lista.xml");
stan = "play";
function dopasowanie() {
pole_txt._x = 88;
pole_txt._y = 5;
dlugosc = pole_txt._width;
setInterval(plywanie, 70);
}
function plywanie() {
if (pole_txt._x+dlugosc > -0) {
pole_txt._x = pole_txt._x - 0.5;
}else{
pole_txt._x = 88;
}
}
function loadXML(loaded) {
//jeśli załadowany to odczytaj informacje o utworach
if (loaded) {
//pobieranie każdej piosenki
for (i=0; i<xmlData.firstChild.childNodes.length; i++) {
//[przypisywanie każdej informacji o piosence do tablic
id[i] = i;
autor[i] = xmlData.firstChild.childNodes[i].attributes.autor;
tytul[i] = xmlData.firstChild.childNodes[i].attributes.tytul;
path[i] = xmlData.firstChild.childNodes[i].attributes.path;
loader_mc._visible = true;
muzyka.loadSound(path[number], true);
trace(muzyka.getBytesLoaded());
zaladowano = muzyka.getBytesLoaded();
total = muzyka.getBytesTotal();
success = "false";
muzyka.onLoad(success = "true");
if(success == "true") {
loader_mc._visible = false;
pole = autor[0]+" - "+tytul[0];
muzyka.start();
dopasowanie();
}
}
} else {
trace("błąd z plikiem");
}
}
pause_mc.onRelease = function() {
if (stan == "play") {
pause_resume = muzyka.position;
muzyka.stop();
stan = "pause";
}
}
play_mc.onRelease = function() {
if (stan == "pause") {
muzyka.start(pause_resume / 1000);
stan = "play";
}
}
next_mc.onRelease = function() {
if (number <= id.length-2) {
muzyka.loadSound(path[++number], true);
muzyka.start();
pole = autor[number]+" - "+tytul[number];
dopasowanie();
}else{
}
}
prev_mc.onRelease = function() {
if (number != 0) {
muzyka.loadSound(path[--number], true);
muzyka.start();
pole = autor[number]+" - "+tytul[number];
dopasowanie();
}else{
}
}
Ranga: Administrator serwisu Punktów: 0