Avatar billede kgeee Nybegynder
30. marts 2005 - 19:01 Der er 12 kommentarer og
1 løsning

Random funktion med pulje

Jeg har før fået hjælp til følgende funktion.

function randRange(min:Number, max:Number):Number {
  var randomNum:Number = Math.round(Math.random()*(max-min))+min;
  return randomNum;
}
randomtid = randRange(1000, 3000);
var randomlyd:Sound = new Sound();
function spilMP3 () {
    randomlyd.loadSound(randRange(1, 3)+".mp3", true);
}
function callback1() {
        trace("interval called");
        trace(randomtid);
        spilMP3 ();
        randomtid = randRange(1000, 3000);
        clearInterval(interval);
        var interval = setInterval( callback1, randomtid  );
}
var interval = setInterval( callback1, randomtid  );

Den virker også rigtig fint. Men jeg ønsker at udvide den lidt. Der er x antal filer. Den vælger f.eks. random mellem 10 forskellige lyde. Men den skal ikke kunne spille de samme sange 2 gange efter hinanden.

Så der skal laves en pulje på de 10 sange. Når den så har spillet sangen skal den fjerne den fra puljen, og herefter tjekke om den findes i puljen, inden den spiller. Filerne hedder fra 1 til 10.mp3. Når alle 10 filer er blevet afspillet, skal puljen resettes, og møllen skal startes igen.

Hvordan gøres dette smartest. Jeg havde forestillet mig noget med et aray. Men er dette det smarteste?
Avatar billede larsholmgaard_dk Nybegynder
31. marts 2005 - 00:28 #1
Jeg spurgte engang efter hjælp til at rafle indholdet i en array og fik denne glimrende løsning: www.eksperten.dk/spm/182010 - det burde kunne hjælpe dig lidt på vej.
Avatar billede kgeee Nybegynder
31. marts 2005 - 00:39 #2
Tak for dit svar. Umiddelbart er det to forskellige ting. Jeg skal ikke have blandet mit array. Jeg skal have pillet nogle specifikke elementer ud.

Andre svar er mere end velkomne..
Avatar billede larsholmgaard_dk Nybegynder
31. marts 2005 - 00:43 #3
Mjaejooe... men, hvis du nu har et array med fx sang 0-9 og du rafler arrayet, så kan du jo bare loope igennem det og trække sangene ud på den måde? Så vil ingen af dem jo blive spillet igen, men de vil hver gang være blandet, fordi du rafler arrayet. Det var sådan set dét jeg mente med mit forslag...
Avatar billede kgeee Nybegynder
31. marts 2005 - 00:45 #4
Det lyder interessant. Men hvordan skal det flettes ind i ovenstående kode? Den har allerede en random funktion der vælger mellem 1 og 10.
Avatar billede larsholmgaard_dk Nybegynder
31. marts 2005 - 00:50 #5
Ja, altså du laver jo som sagt dit array, bestående af navnene på sangene. Så bruger du koden fra mit link til at rafle sangene og så gafler du ganske enkelt element nummer 1 ud af arrayet, spiller den og fortsætter med 2,3,4 osv. op til slutningen af arrayet. Sangene vil jo være blandet rundt i arrayet, så du er sikker på at de spiller tilfældigt uden at gentages.
Avatar billede kgeee Nybegynder
31. marts 2005 - 00:53 #6
Ja, det lyder rimeligt. Men hvordan sletter man så den fil, der er blevet spillet? altså piller en variabel ud af indexet på arrayet.
Avatar billede larsholmgaard_dk Nybegynder
31. marts 2005 - 00:57 #7
Det skal du jo netop ikke, når alle sangnavnene er raflet indenfor arrayet:

Uraflet array:
{"0.mp3", "1.mp3", "2.mp3", "3.mp3", "4.mp3, "5.mp3", "6.mp3"}

Raflet array:
{"3.mp3", "1.mp3", "5.mp3", "4.mp3", "6.mp3, "0.mp3", "2.mp3"}

Hvis du looper det raflede array igennem, altså bruger en tæller, der går fra 0 til 6 og hiver det respektive navn ud, så går det jo af sig selv. Der skal ikke fjernes noget, bare loopes.
Avatar billede kgeee Nybegynder
31. marts 2005 - 01:01 #8
Det har du faktisk ret i. Jeg skal bare blande arrayet når alle sangene er blevet spillet. Men det kan jo gøres ved en simpel varibel der tæller... Tak for svaret. Kom med et svar, så får du nogle point. Der kommer nok en tråd senere, hvis der skal trouble shootes på mit script :-)
Avatar billede larsholmgaard_dk Nybegynder
31. marts 2005 - 01:03 #9
Det var så lidt, men hvad mener du med en 'simpel variabel der tæller'?
Avatar billede kgeee Nybegynder
31. marts 2005 - 01:05 #10
Jeg tænker bare på en varibel, der bliver plusset med én hver gang der er blevet spillet en lyd. Når den når 6, skal arrayet blandes, og variablen skal tilskrives værdien 0. Håber du forstår hvad jeg mener... er ikke helt sikker på jeg selv gør.
Avatar billede larsholmgaard_dk Nybegynder
31. marts 2005 - 01:07 #11
Nå, okay - jeg frygtede lige du ville til at lave en random variabel... nevermind, jeg er ved at være træt... ;-)

Held og lykke med det!
Avatar billede larsholmgaard_dk Nybegynder
31. marts 2005 - 01:13 #12
Hov, jeg glemte da det med svaret... jeg sover vist allerede. Godnat! :-)
Avatar billede kgeee Nybegynder
31. marts 2005 - 01:15 #13
Selv tak. Sov godt :-) Og tak...
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