Avatar billede msn Nybegynder
08. marts 2006 - 21:51 Der er 2 kommentarer

Flash audioplayer skal spille numre fortløbende

Jeg har en Flash audioplayer som afspiller mp3-filer fra en given mappe. Derudover er tilknyttet en xml-fil med konfigurationer som filnavne og titler på de forskellige tracks (i dette tilfælde 14 stk).

Eneste problem er at den bliver ved med at loope track 1 i ring, indtil man på en af de 14 knapper vælger et andet track. Jeg vil gerne have at den spiller track 1 og automatisk går videre til 2, 3 osv.Det er nok bare en lille detalje der skal ændres, men jeg har mistet overblikket.

Her er det væsentligste actionscript i filen. Håber at nogen af indsigt nok til at overskue det. Takker.

var count = 0;

tf._width = 116;
tf._alpha = 150;

function parsexmlnodes(node){
    var curnode = node.firstChild;
    while(curnode!=null){
        if(curnode.nodeName.toUpperCase()=="TRACKS"){
            curnode = curnode.firstChild;
            while(curnode!=null){
                if(curnode.nodeName.toUpperCase()=="TRACK"){
                    addbutton(curnode);
                }
                curnode = curnode.nextSibling;
            }
            return true;
        }else if(parsexmlnodes(curnode)){
            return true;
        }else{
            curnode = curnode.nextSibling;
        }
    }
}

function addbutton(node){
    //trace(this + ".addbutton(...)");
    var itemmov = null, previtem = eval("btn" + (count-1));
    if(count==0){
        itemmov = btn0;
    }else{
        btn0.duplicateMovieClip("btn" + count, count);
        itemmov = eval("btn" + count);
    }
    itemmov._caption = count+1;
    itemmov._x += count*13;
    tf._x = itemmov._x + 20; //tf pos
    itemmov._src = node.attributes.SRC;
    itemmov._track = node.attributes.NAME;
    itemmov._artist = node.attributes.ARTIST;
    itemmov._press = function(){
        //trace(this + "._press()");
        this._parent.loadsound(this._src, this._artist, this._track);
    }
    itemmov._prev = previtem;
    itemmov._next = null;
    previtem._next = itemmov;
    count++;
}

parsexmlnodes(_root.configxml);

this._x = 800 - this._width;

var snd = new Sound(), cursrc = "", curtext = "";

snd.setVolume(20);
snd.onSoundComplete = function(){
    //trace("complete " + this);
    this.stop();
    // Lydvolumen ved gentagende afspilninger
    snd.setVolume(100);
    snd.start(0, 1);
}

function loadsound(src, artist, track){
    //trace(this + ".loadsound(" + src + ")");
    cursrc = src;
    // Generel lyd-volumen
    snd.setVolume(20);
    snd.loadSound("tracks/" + src, true);
    snd.start();
    if(artist != undefined and track != undefined){
        curhtmlcode = artist + " : " + track;
        tf.text = curhtmlcode;
    }
}

function startsound(){
    //trace(this + ".startsound()");
    snd.setVolume(100);
    loadsound(cursrc);
    tf.htmlText = curhtmlcode;
}

function stopsound(){
    //trace(this + ".stopsound()");
    snd.stop();
    tf.text = "[no sound]";
}
Avatar billede apache999 Nybegynder
09. marts 2006 - 16:23 #1
Det ville nok lette overblikket, hvis du i din parsing af XML'en lavede et array af objekter, der indeholdt oplysninger om de enkelte tracks. Dette array kan du så bruge dels til knapperne, ved at du lader de enkelte knapper henvise til et index i array'et i stedet for at indeholde disse oplysninger selv, dels til din onSoundComplete-funktion, hvor du lader loadsound loade det næste objekt i array'et (eller spole tilbage til det første, hvis der ikke er flere objekter/tracks).

Så du skal dels bruge en variabel, der peger på dit nuværende index (fx var currentIndex:Number), dels det hersens array
Avatar billede msn Nybegynder
09. marts 2006 - 16:49 #2
Ak ja, men så avanceret er jeg desværre ikke inden for actionscripting. Mit stadie er et sted på "onRelease GoTo". Derfor var mit håb at man bare kunne ændre en detalje i ovenstående for at undgå loop af hvert track, men bare kunne spille dem fortløbende pr. automatik. Nogen bud?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester