Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-01-2005, 14:50   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Ort: Köln
Beiträge: 31
Mehrdimensionale Arrays innerhalb der for-Schleife killen

Hallo Leutz,

hab hier ein kleines Problem mit meinem Skript. Irgendwie bekomme ich es nicht hin nach jedem Schleifendurchgang ein ArrayElement zu löschen.


Zum Ursprung:

Das ganze sieht so aus, dass ich aus dem Array kartenpos per Random eine Zufallszahl über kartenpos.length ermittel. Dann hole ich mir diesen Wert und füge diesen an einem attachMovie() dran. Dieser wird dann erfolgreich positioniert.

So mein Problem ist das Random öfter mal den selben Wert von Kartenpos holt sodass mancher Clip 2x exakt an der selben Stelle plaziert wird.

Meine Überlegung wäre nach jedem erfolgreichen positionieren eines MovieClips über attachMovie(), die jeweilige Position im Array einfach zu löschen. So kann dann die Randomfunktion nicht mehr den selben Wert nehmen.

Hier mal das Script:

function setzePosition(){

kartenpos = [

["0","0"], //0
["171","0"], //1
["342","0"] //2
["513","0"], //3
["684","0"], //4
["855","0"], //5

["0","166"], //6
["171","166"], //7
["342","166"], //8
["513","166"], //9
["684","166"], //10
["855","166"], //11

["0","332"], //12
["171","332"], //13
["342","332"], //14
["513","332"], //15
["684","332"], //16
["855","332"], //17

["0","498"], //18
["171","498"], //19
["342","498"], //20
["513","498"], //21
["684","498"], //22
["855","498"] //23

];

anzahl = random(10);


for(i = 0; i<anzahl; i++){

//Array-Container aller Clips erstellen;
clips = new Array("a","b","c","d","e","f","g","h","i","j","k") ;

//Zufällig ein MC auswählen;
suxx = random(clips.length);

//Inhalt des Arrays auslesen;
mein = clips[suxx];


//Zufällige x und y - Position des KartenArray ermitteln;
zufall = random(kartenpos.length);

//Wert der jeweiligen Position holen;
zufallsWert = kartenpos[zufall]

//X-Werte und Y-Werte in Variablen speichern um diese zu übermitteln;
a = zufallsWert[0];
b = zufallsWert[1];

var index = zufall;
var anzahl = 1;
kartenpos.splice( index, anzahl);

trace(kartenpos);


_root.createEmptyMovieClip("meinClip"+i, i);
_root["meinClip"+i]._x = a;
_root["meinClip"+i]._y = b;

_root["meinClip"+i].attachMovie(mein, "neuerTest"+i, i);

}




}
setInterval(setzePosition, 2000);

Vielleicht könnt ihr mir ja einen Tip geben. Thanx a lot.

Grüssle
root66 ist offline   Mit Zitat antworten
Alt 21-01-2005, 18:30   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
...komisch, aber das splice() müsste das doch bringen, oder etwa nicht?
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 21-01-2005, 19:44   #3 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
tut es auch, aber nur wenn du das array AUSSERHALB
der «function setzePosition()» definierst. denn so wird
bei jedem aufruf das komplette ausgangs-array wieder
über das alte drüberdefiniert. folglich ändert sich auch
die anzahl der array-elemente nicht.

was mich im moment verwirrt ist, daß jetzt zwei zahlen
statt einer gelöscht werden.

[/EDIT] okay, ist ja ein zweidimensionales array ... [/EDIT]

bin aber noch dran :-)

gruß, gaspode

Geändert von gaspode (21-01-2005 um 19:48 Uhr)
gaspode ist offline   Mit Zitat antworten
Alt 21-01-2005, 19:57   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Ort: Köln
Beiträge: 31
Hey genial,

vielen Dank! Werde das jetzt gleich mal direkt ausprobieren.

Thanx

Gruss
root66 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 22:41 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele