Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-08-2008, 11:23   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 6
array random und splice problem

hallo,
ich habe folgendes problem : ich versuche 8 movieclips (["bild"+i].inhalt)
aus einem array per random zu füllen, wobei sich der inhalt der einzelnen movieclips aber nicht wiederholen soll ... hier mein ansatz
(funktioniert leider so nicht)

Code:
var Bilder:Array = new Array("galerie/test_01.swf", "galerie/test_02.swf", "galerie/test_03.swf", "galerie/test_04.swf", "galerie/test_05.swf", "galerie/test_06.swf", "galerie/test_07.swf", "galerie/test_08.swf");
// ----------------------------------------------------------------------------- 

for (var i = 1; i<9; i++) {
	var zuff = Math.round(Math.random(Bilder.length));
	this["bild"+i].inhalt.loadMovie(Bilder[zuff]);
	Bilder.splice(zuff, 1);
}
kann mir jemand sagen, was ich hier falsch mache ?

vielen dank im voraus,
ratso
ratso ist offline   Mit Zitat antworten
Alt 14-08-2008, 11:26   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
kann mir jemand sagen, was ich hier falsch mache ?
Deine Zufallsfunktion berechnet 8mal einen Zufallswert. Der kann aber ja theoretisch jedesmal derselbe Wert sein. Ich würde eher das Array selbst über eine Sortierfunktion mit Zufallswerten neu sortieren.
  Mit Zitat antworten
Alt 14-08-2008, 11:37   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 6
Zitat:
Zitat von agedoubleju Beitrag anzeigen
Deine Zufallsfunktion berechnet 8mal einen Zufallswert. Der kann aber ja theoretisch jedesmal derselbe Wert sein. Ich würde eher das Array selbst über eine Sortierfunktion mit Zufallswerten neu sortieren.
kannst du mir vielleicht schreiben, wie ich das etwa aufbauen kann? ich dachte das 'splice' würde das tun ... und zudem wundert es mich, daß die movieclips überhaupt gar nichts laden, ich kann keinen fehler beim loadmovie erkennen ...

vielen dank,
ratso
ratso ist offline   Mit Zitat antworten
Alt 14-08-2008, 11:47   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Du kannst einem Array.sort eine selbstdefinierte Sortierfunktion anhängen. Einfach mal googlen...
  Mit Zitat antworten
Alt 14-08-2008, 11:59   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 6
okay, dankeschön ... eine frage noch, hast du vielleicht eine idee, warum, die sortierproblematik mal ausgeklammert,

Code:
this["bild"+i].rein.loadMovie(Bilder[zuff]);
überhaupt gar nichts lädt? das müßte doch eigentlich so gehen, oder?

danke,
ratso
ratso ist offline   Mit Zitat antworten
Alt 14-08-2008, 15:04   #6 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 6
hab's hingekriegt ... aber in as 2.0 ...

------------------------------------
Code:
var images = ["galerie/test1.swf", "galerie/test2.swf", "galerie/test3.swf", "galerie/test4.swf", "galerie/test5.swf", "galerie/test6.swf", "galerie/test7.swf", "galerie/test8.swf"];
function randomize(arr:Array){
    var tmp,rn;
    var len = arr.length;
    for(var i=0;i < len;i++){
        tmp = arr[i];
        arr[i] = arr[rn = random(len)];
        arr[rn] = tmp;
    }
}
randomize(images);
trace(images);

bild1.loadMovie(images[0]);
bild2.loadMovie(images[1]);
bild3.loadMovie(images[2]);
bild4.loadMovie(images[3]);
bild5.loadMovie(images[4]);
bild6.loadMovie(images[5]);
bild7.loadMovie(images[6]);
bild8.loadMovie(images[7]);
bild5.loadMovie(images[8]);
bild6.loadMovie(images[9]);
bild7.loadMovie(images[10]);
bild8.loadMovie(images[11]);
ratso ist offline   Mit Zitat antworten
Alt 14-08-2008, 21:06   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Hättest du auch noch verkürzen können:
PHP-Code:
var images = ["galerie/test1.swf""galerie/test2.swf""galerie/test3.swf""galerie/test4.swf""galerie/test5.swf""galerie/test6.swf""galerie/test7.swf""galerie/test8.swf"];
function 
randomize(arr:Array){
    var 
tmp,rn;
    var 
len arr.length;
    for(var 
i=0;len;i++){
        
tmp arr[i];
        
arr[i] = arr[rn random(len)];
        
arr[rn] = tmp;
    }
}
randomize(images);
trace(images);

var 
len=images.length;
for(var 
i=0;i<len;i++){
   
this["bild"+(i+1)].loadMovie(images[i]);
}
/*
bild1.loadMovie(images[0]);
bild2.loadMovie(images[1]);
bild3.loadMovie(images[2]);
bild4.loadMovie(images[3]);
bild5.loadMovie(images[4]);
bild6.loadMovie(images[5]);
bild7.loadMovie(images[6]);
bild8.loadMovie(images[7]);
bild5.loadMovie(images[8]);
bild6.loadMovie(images[9]);
bild7.loadMovie(images[10]);
bild8.loadMovie(images[11]);
*/ 
BTW: wieso hast du im Array weniger Einträge als beim loadMovie?
  Mit Zitat antworten
Alt 15-08-2008, 11:47   #8 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 6
Zitat:
BTW: wieso hast du im Array weniger Einträge als beim loadMovie?
ist nur beispielhaft ... ich brauchte dann doch 12 movieclips - habe ich im beispiel oben (im array) nicht aktualisiert ...

grüße,
ratso
ratso ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:10 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele