Avatar billede globulous Nybegynder
15. september 2003 - 11:15 Der er 15 kommentarer og
2 løsninger

loaded of afspille flere mp3 lyde

Jeg skal til at lave en Flash funktion hvor brugeren kan vælge mellem en masse små lydklip. Alt efter hvad der vælges, skal disse spilles i den loades og afspilles i den rækkefølge som brugeren har valgt.

Mit spærgsmål går på om der er nogen der har erfaring med at loaded ca. 10 små mp3 filer ind på en gang. Kan jeg bare loade dem gennem en for-lykke eller er der nogen der kan gå tabt?

Kan jeg derfeter bruge noget alla mySound.duration-mySound.position for at finde ud af hvornår den næste lyd skal afspilles?

Håber det giver mening.

VH
Michael
Avatar billede barklund Nybegynder
15. september 2003 - 11:26 #1
Du kan godt starte load af dem alle på en gang. Og du kan bruge onSoundComplete-event'en til at tricke den næste.
Avatar billede hoejrup Nybegynder
15. september 2003 - 11:29 #2
Hvis du skal uploade lyd på internettet, så skal du lave en aftale
med Koda. Det koster 100 kr. måneden for lydklip op til 45 sekunder. Du skal lave en aftale med dem, selvom det er din egen musik. Men så kan du undgå afgiften.

Link: http://www.koda.dk/usr/koda/kodaweb.nsf/default?OpenForm&URL=sider/inter_priserinternet_streamingprisoversigt

/per
Avatar billede barklund Nybegynder
15. september 2003 - 11:34 #3
Nu hører jeg ud fra "en masse små lydklip" nærmere lyde som "boing" og så videre. Og så er det vist ganske ligegyldigt. Jeg tror kun koda kan kræve afgifter af lyde, der er komponerede - ikke alle lyde!
Avatar billede _k Nybegynder
15. september 2003 - 11:40 #4
Svaret er onSoundComplete

Du kan bruge denne metode både til at afspille dine filer i rækkefølge, da onSoundComplete bliver aktiveret når den lyd den holder øje med er færdigafspillet. Altså en slags rekursiv funktion.
Kunne godt selv lire lidt kode af, men det er en bedre hjælp for dig at trykke F1 inde i Flash og finde/lede efter Sound.onSoundComplete - der er et godt eksempel.

Ang. at hente lyden ind, vil jeg også anbefale dig at gøre det rekursivt, altså at hente en fil, få en succes-tilbagemelding og derefter hente den næste. F.eks. på denne måde:

mitLydArray = ["fil1", "madonna", "TheBoss", "SussiOgLeo"]

function enkeltLyde(nr) {   
    minLyd = new Sound();
    minLyd.onLoad = function() {
            if(mitLydArray[nr + 1] != undefined) {
          enkeltLyd(nr + 1);
        }
        else {
            trace("Færdigloaded");
        }
    }
    minLyd.loadSound(mitLydArray[nr] + ".mp3", false);
}

Så kalder du funktionen med: enkeltLyde(0);

.... og så skulle du gerne være flyvende. (ovenstående kode er ikke testet, men det er fremgangsmåden ;o)
Avatar billede hoejrup Nybegynder
15. september 2003 - 11:40 #5
barklund> Jeg ved ikke om det er små musikstykker han skal indlæse i flash. Men det var bare en oplysning til ham.

/per
Avatar billede globulous Nybegynder
15. september 2003 - 11:48 #6
Det er ikke musik stykke, det er lyde som det er ikke er Koda problemer med - det ved jeg!

Brugerens valg har jeg i en array, så kan jeg bruge den rekursive funktion som du forslår k til at loade dem ind en ad gang, og i samme funktion tildele dem en onSoundComplet callBack funktion som spiller den næste i arrayen, hvis der altså er flere. Lyder det ikke meget fornuftigt?

VH
Michael
Avatar billede _k Nybegynder
15. september 2003 - 11:50 #7
..hov glemte lige, at du også skal loade ovenstående lyde ind i et array - altså noget udskifte "minLyd" med "minLyd[nr]" - ellers er det hentede jo ikke klar til brug....
Avatar billede _k Nybegynder
15. september 2003 - 11:51 #8
...og jo, den fremgangsmåde lyder ganske fornuftig!
Avatar billede globulous Nybegynder
15. september 2003 - 12:17 #9
Jamen, så vil jeg takke for inspirationen nu, og vende tilabage hvis der opstår flere problemer :-)

k - kan du ikke smide et svar?
Avatar billede barklund Nybegynder
15. september 2003 - 12:19 #10
Jeg tror det smarteste er at loade alle lydene fra starten og så afspille efterhånden. k's eksempel loader først den enkelte lyd, når den kommer til den.
Avatar billede globulous Nybegynder
15. september 2003 - 12:25 #11
Ok. Ja jeg forstiller mig en funktion som loader en lyd fra en array. Når lyden er loaded, loades den næste osv. Men i denne process for de tildelet en onSoundComplet callBack funktion.

Efter alle lydene er loaded. Spilles den første i arrayen. Når den er færdig (on SoundComplet) spilles den næste i arrayen.

Nu så jeg ikke lige koden ordentligt igennem, men det er hvad jeg forstiller mig. Det er nemlig vigtigt at lyden afspilles uden hak - det skal være flydende...
Avatar billede globulous Nybegynder
15. september 2003 - 12:32 #12
Kan man ikke sætte det op sådan her:

mitLydArray = ["fil1", "madonna", "TheBoss", "SussiOgLeo"];
function enkeltLyde(nr) {
    this['minLyd'+nr] = new Sound();
    this['minLyd'+nr].onLoad = function() {
        if (mitLydArray[nr+1] != undefined) {
            enkeltLyd(nr+1);
        } else {
            trace("Færdigloaded");
        }
    };
    this['minLyd'+nr].onSoundComplete = callBack;
    this['minLyd'+nr].loadSound(mitLydArray[nr]+".mp3", false);
    if (nr == mitLydArray.length-1) {
        minLyd0.play();
    }
}
function callBack() {
    //spil næst lyd
}
Avatar billede globulous Nybegynder
15. september 2003 - 12:34 #13
Nærmere sådan her:

mitLydArray = ["fil1", "madonna", "TheBoss", "SussiOgLeo"];
function enkeltLyde(nr) {
    this['minLyd'+nr] = new Sound();
    this['minLyd'+nr].onLoad = function() {
          if (nr == mitLydArray.length-1) {
        minLyd0.play();
        }
        elseif (mitLydArray[nr+1] != undefined) {
            enkeltLyd(nr+1);
        } else {
            trace("Færdigloaded");
        }
    };
    this['minLyd'+nr].onSoundComplete = callBack;
    this['minLyd'+nr].loadSound(mitLydArray[nr]+".mp3", false);
  }
function callBack() {
    //spil næst lyd
}
Avatar billede barklund Nybegynder
15. september 2003 - 12:53 #14
Jeg ville gøre det således:

mitLydArray = ["fil1", "madonna", "TheBoss", "SussiOgLeo"];
minLydCounter = 0;
mineLyde = new Array();
function hentNaeste() {
    if (minLydCounter < litLydArray.length) {
        var m = mineLyde[minLydCounter] = new Sound(this);
        m.loadSound(mitLydArray[minLydCounter]);
        m.onLoad = hentNaeste;
        m.onSoundComplete = spilNaeste;
        minLydCounter++;
    } else {
        minLydCounter = 0;
        mineLyde[0].start();
    }
}
function spilNaeste() {
    if (minLydCounter < litLydArray.length) {
        mineLyde[minLydCounter].start();
        minLydCounter++;
    } else {
        trace("alt er afspillet");   
    }
}
Avatar billede _k Nybegynder
15. september 2003 - 21:28 #15
Lægger gerne et svar, men mon ikke Barklund også har fortjent nogle point?
Avatar billede barklund Nybegynder
15. september 2003 - 22:31 #16
(et lille svar)
Avatar billede barklund Nybegynder
30. september 2003 - 17:50 #17
Tark for points :)
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