Dynamischer Text mit Array sortieren

delphinhawe

Erfahrenes Mitglied
Hallo Alle,

ich hoffe, ihr könnt mir helfen.
Ich möchte die dynamischen Texte mit Array sortieren.
In der Szene-Ausgabe soll so aussehen wie folgt:

2: Zwei!
4: Vier!
8: Acht!

Wie kann ich z.B. Ergebnis_z.text = y1 + ": Acht!"; deklarieren
und dann in die eckige Klammer des Array einfügen?

PHP:
// 2. Beispiel Sortierung mit Array (Szene-Ausgabe)

var zahl = 1;
var x1, y1, z1;

x1 = Number(zahl) * 4;
Ergebnis_x.text = x1 + ": Vier!";		

y1 = Number(zahl) * 2;
Ergebnis_y.text = y1 + ": Zwei!";		

z1 = Number(zahl) * 8;
Ergebnis_z.text = z1 + ": Acht!";		

var test1:Array = [Ergebnis_x.text, Ergebnis_y.text, Ergebnis_z.text]; //?
test1.sort();
trace(test1);

// 1. Beispiel mit Sortierung (Nur für konsole Ausgabe)!
var a = 4;
var b = 2;
var c = 8;

var test:Array = [a,b,c];
test.sort();
trace(test);
 
Schreib dir eine kleine Hilfsfunktion:

PHP:
function stringZahl(zahl) {
	switch(zahl) {
		case 0: return "Null";
		case 1: return "Eins";
		case 2: return "Zwei";
		case 3: return "Drei";
		// ...
		default: return "Zweiundvierzig";
	}
}

Alternativ kannst du auch immer mit parseInt(meinArray[x].getCharAt(0)) die Zahl auslesen und damit sortieren, da wird aber meinArray.sort() nicht funktionieren, brauchste ne eigene Sortierfunktion.
 
Zuletzt bearbeitet:
Danke!

Ich habe ein leeres Array-Objekt und dreimal push erstellt.
Nach dem testen klappt die Sortierung ganz gut.
Die Reihefolge, 2 -> 4 -> 8, stimmt korrekt,
aber wenn ich die Variable a mit dem Wert von 4 auf 46 ändere.

Dann stimmt die Reihenfolge nicht, wie folgt: 2 -> 46 -> 8

Das verstehe ich nicht! Kannst Du vielleicht korrigieren?

PHP:
var a, b, c;

a=46;
b=2;
c=8;

test1 = new Array(); 
test1.push({name:"sechsundvierzig", zahl: a}); 
test1.push({name:"Zwei", zahl: b}); 
test1.push({name:"Acht", zahl: c}); 

function sortieren(TEST) { 
    test1.sortOn(TEST); 
    //id = name=zahl=""; 
	
    for (i=0; i<test1.length; i++) { 
        name += test1[i]["name"]+"\n";
		zahl += test1[i]["zahl"]+"\n";
    } 
} 
 
sortieren("zahl");
 
Hallo Jens,

anbei meine Verbesserung. Es funktioniert leider nur für ActionScript 2.0 :-(
Wie kann ich meine Lösung auf ActionScript 3.0 umwandeln?

PHP:
var a, b, c, d, e, f;

a=12;
b=75.67652;
c=3;
d=45;
e=51;
f=6;

test1 = new Array(); 
test1.push({name:"ein"	, zahl: a}); 
test1.push({name:"zwei"	, zahl: b}); 
test1.push({name:"drei"	, zahl: c}); 
test1.push({name:"vier"	, zahl: d}); 
test1.push({name:"fünf"	, zahl: e}); 
test1.push({name:"sechs", zahl: f}); 

test1.sortOn ("zahl", Array.NUMERIC);  
      
    for (i=0; i<test1.length; i++) 
	{ 
        name += test1[i]["name"]+"\n";
        zahl += test1[i]["zahl"]+"\n";
	}
 
sortieren("zahl");
 
Zurück