Avatar billede soelle Nybegynder
10. november 2005 - 09:00 Der er 12 kommentarer og
1 løsning

Random nummer i koden

Jeg har brugt nedenstående kode til at hente en række billeder fra en mappe og vise i flash. Kan man få den til at vise et random nummer så det ikke er samme rækkefølge hver gang?


import mx.transitions.*;
createEmptyMovieClip("a", 1);
a._alpha = 0;
createEmptyMovieClip("b", 2);
b._alpha = 0;
(f=function () {
    clearInterval(i);
    p = (c == a ? b : a);
    (m=new MovieClipLoader()).loadClip("./"+((i=++i%9) || (i=1))+".jpg", p);
    m.onLoadComplete = function() {
        new Tween(c, "_alpha", 0, 100, 0, 40);
        t = new Tween(c=p, "_alpha", 0, 0, 100, 40);
        t.onMotionFinished = function() {
            i = setInterval(f, 10000);
        };
    };
}).call();
Avatar billede docks Nybegynder
10. november 2005 - 12:35 #1
lav et array med dine billeder i - derefter brug random(array.length) og splice til at tage dem i tilfældig rækkefølge...
Avatar billede docks Nybegynder
10. november 2005 - 12:35 #2
på denne måde sikrer du at det samme billede ikke blive hentet 2 eller flere gange :)
Avatar billede soelle Nybegynder
10. november 2005 - 16:09 #3
Kan det ikke integreres i ovenstående kode? - jeg skal nemlig hente billederne fra en ekstern mappe.
Avatar billede docks Nybegynder
10. november 2005 - 17:31 #4
pictArray = new Array();
numOfPicts = 10 // antal billeder
for(i=0; i<numOfPicts;i+){
pictArray.push(i)
}

import mx.transitions.*;
createEmptyMovieClip("a", 1);
a._alpha = 0;
createEmptyMovieClip("b", 2);
b._alpha = 0;
(f=function () {
    clearInterval(i);
    p = (c == a ? b : a);
    rand = random(pictArray.length);
    (m=new MovieClipLoader()).loadClip("./"+pictArray[rand]+".jpg", p);
    pictArray.splice(rand,1);
    m.onLoadComplete = function() {
        new Tween(c, "_alpha", 0, 100, 0, 40);
        t = new Tween(c=p, "_alpha", 0, 0, 100, 40);
        t.onMotionFinished = function() {
            i = setInterval(f, 10000);
        };
    };
}).call();



tror jeg :S
Avatar billede palmskov Nybegynder
10. november 2005 - 17:32 #5
brug evt. Math.ceil(Math.random()*antal du ønsker) til at generere et tilfældigt tal

var nuværende:Number = Math.ceil(Math.random()*20)
Avatar billede soelle Nybegynder
10. november 2005 - 17:35 #6
Det skal så integreres i denne linie?

(m=new MovieClipLoader()).loadClip("./"+((i=++i%9) || (i=1))+".jpg", p);
Avatar billede palmskov Nybegynder
11. november 2005 - 11:34 #7
var nummer:Number = Math.ceil(Math.random()*20)

(m=new MovieClipLoader()).loadClip("./"+((i=++i%9) || (i=nummer))+".jpg", p);
Avatar billede docks Nybegynder
11. november 2005 - 12:40 #8
Math.ceil returnerer et tilfældigt tal - hvilket er fint nok, men du kan risikere at det returnerer det samme tal mere end 1 gang.
Avatar billede palmskov Nybegynder
11. november 2005 - 13:34 #9
@docks: Rigtigt nok

Prøv dette og så load billederne ind i de levels, depths eller movieclips du ønsker i stedet for min trace:

function randomizer(){
return (Math.random()-0.5)}

var images:Array = new Array("afrika.jpg","europa.jpg","amerika.jpg","asien.jpg");
images.sort(randomizer);

for(i=0;i<images.length;i++){
    trace(images[i]);
    }

Du kan lave MC fysisk og loade billederne ind eller generere dem i for loopet via en duplicateMovieClip.
Avatar billede soelle Nybegynder
11. november 2005 - 14:57 #10
Jamen overser I ikke at billederne hentes fra en ekstern mappe?
Avatar billede palmskov Nybegynder
11. november 2005 - 15:04 #11
Nej du skal jo også tænke selv;)

function randomizer(){
return (Math.random()-0.5)}

var images:Array = new Array("afrika.jpg","europa.jpg","amerika.jpg","asien.jpg");
images.sort(randomizer);

for(i=0;i<images.length;i++){
    this["MC"+i].loadMovie(images[i]);
    }
Avatar billede soelle Nybegynder
05. januar 2006 - 10:06 #12
jeg er så åbenbart ikke klog nok. Jeg kan ikke se hvordan jeg skal smelte min kode sammmen med random koden.
Avatar billede soelle Nybegynder
18. januar 2007 - 20:33 #13
lukker
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