Avatar billede kgeee Nybegynder
17. marts 2005 - 00:07 Der er 11 kommentarer og
2 løsninger

2 x random funktion

Jeg har en flash film, hvor der skal afspilles en tilfældig fil (10 forskellige) med et tilfældigt tidsinterval.

Der er 10 lydfiler. De kan navngives 1.mp3, 2.mp3 osv.

Flash skal tælle et random tidsinterval mellem 10 og 80 sekunder. Herefter skal den vælge en tilfældig fil af de 1.mp3, 2.mp3, 3.mp3 etc. og afspille denne én gang.

Hvordan skrives sådan en funktion? Jeg har svært ved at gennemskue random funktionen.
Hvordan fungerer det med eksterne mp3 filer? Kan du loade dem ind i et tomt movieclip, og skrive tomt_mc.play () ? Og spiller den så kun én gang? ( det skal den nemlig)
Avatar billede mat Nybegynder
17. marts 2005 - 09:19 #1
Til random bruger du Math.floor(Math.random() * max_integer) for at få en integer mellem 0 og max_integer - 1.

Til tidsintervaller bruger du setInterval(function, interval_i_ms).

Du kan streame eksterne mp3'er med Sound objektet, så nej du loader ikke ind i en movieclip (som sådan), men bruger Sound.loadSound(fil_sti, true).

Du kan så resette dit interval, finde en ny random lydfil o.s.v når Sound.onSoundComplete kaldes (hvilket den bliver når din mp3 er spillet færdig).

mvh mat
Avatar billede kgeee Nybegynder
17. marts 2005 - 09:39 #2
Det var også det jeg circa var kommet frem til :-) Men jeg har lidt svært ved at udspecificere koden, og i hvilken rækkefølge det hele skal ske i. Måske du kunne give et bud på det?
Avatar billede mat Nybegynder
17. marts 2005 - 10:41 #3
Ellers kunne du jo selv give et bud? Så vidt jeg lige kan se skal der ikke mere til end ovenstående. Så må du bakse med selve udformningen, det er det man lærer af ;)

mvh mat
Avatar billede kgeee Nybegynder
17. marts 2005 - 11:34 #4
God idé.

Først skal der udmåles et random interval mellem 10 og 80 sekunder.

Derefter skal der laves en random funktion der vælger et tal mellem 1 og 10, og udskriver det tal + .swf.

Derefter skal lydklippet loades og spilles.

Når det er færdigt med at spille, skal intervallet resettes, og koden skal startes igen.

Nu kommer der et skud fra hoften:

function tidsinterval = Math.floor(Math.random() * 811)  //dette skulle gerne give et interval mellem 0 og 810 milisekunder

setInterval(spilMP3, tidsinterval) /* Den her er jeg i tvivl om. Jeg går udfra function i første del af parantesen er den function der skal afspilles, når intervallet er gået. Den næste del skulle gerne være hvor lang tid der skal gå før funktionen køres. Her skulle der gerne komme mit random tal ind fra tidsinterval functionen.*/

function randomMP3fil = Math.floor(Math.random() * 11)  //Det skulle gerne give et tal mellem 1 og 10

function spilMP3 = Sound.loadSound(randomMP3fil + ".mp3", true) //den skulle gerne spille min random fil mellem 1 og 10 og tilføje endelsen .mp3 på den.

Sound.onSoundComplete = //Ja, her kan jeg ikke gennemskue hvordan man resetter intervallet og får den til at køre den igen.

Det er fyldt med fejl og syntaks fejl. Men man skal jo begynde et sted :-)
Avatar billede kgeee Nybegynder
17. marts 2005 - 12:35 #5
En revision til noget af scriptet:

function randRange(min:Number, max:Number):Number {
  var randomNum:Number = Math.round(Math.random()*(max-min))+min;
  return randomNum;
}

SpilMP3 = Sound.loadSound(randRange(0, 10)+".mp3", true);

Derudover må man kunne sætte følgende ind i timer funktionen:
randRange(100, 801) // så skulle den gerne sætte et tilfældigt tal ind mellem 100 og 800.

D.v.s.:
setInterval(SpilMP3, randRange(100, 801))

Jeg er stadig i tvivl om clear timer funktionen, og hvordan selve løkken skal laves, så når den starter det hele forfra igen...
Avatar billede kgeee Nybegynder
17. marts 2005 - 13:10 #6
En dejlig lille samtale jeg har her med mig selv. Men jeg er kommet frem til nedenstående script skulle være rigtigt. Det virker i hvertfald. Nogen der kan finde en fejl i det? Tidsintervallet er mellem 1 og 3 sekunder og der vælger mellem 3 MP3 filer.

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);
}

setInterval( callback1, randomtid  );
Avatar billede barklund Nybegynder
19. marts 2005 - 15:57 #7
Der er et problem, nemlig at dit interval bliver ved med at kører med samme interval, som det blev startet med. Altså startes det til at køre hvert sekund, så kører det hvert sekund derefter - du beregner godt nok en ny randomtid-variabel, men den bliver ikke brugt. Du er nødt til at cleare og derefter starte et nyt interval:

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  );
Avatar billede kgeee Nybegynder
19. marts 2005 - 16:03 #8
Alright, super. Så er det hele på plads. Kom med et svar, så deler jeg point ud :-)
Avatar billede barklund Nybegynder
19. marts 2005 - 16:13 #9
Na, tag du bare det meste selv - du løste det jo primært alene - og mat skal da også have lidt, når han engang er stået op.
Avatar billede kgeee Nybegynder
19. marts 2005 - 16:18 #10
Yes, mat, kom med et svar, så skal jeg dele point ud. Tak barklund.
Avatar billede mat Nybegynder
19. marts 2005 - 16:32 #11
funky :)
Avatar billede kgeee Nybegynder
19. marts 2005 - 16:35 #12
alrighty, i delte rovet. tak for hjælpen drenge.
Avatar billede barklund Nybegynder
19. marts 2005 - 17:09 #13
Og 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