17. marts 2005 - 00:07Der 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)
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?
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 ;)
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 :-)
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...
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);}
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 );
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.