Assoziatives Array mit Werten füllen - ActionScript 2.0

SaschaT

Mitglied
Hallo,

ich habe ein Problem mit assoziativen Arrays.

In folgendem Code (gekürzt) erzeuge ich wie von Adobe empfohlen ein Objekt, das ich als assoziatives Array benutzen möchte. Die einzelnen Elemente sollen wiederum "normale" Arrays aufnehmen - aber das ist hier eigentlich nebensächlich.

Mein Problem ist, dass ich dem Objekt kein Eigenschaft-Werte-Paar zuweisen kann. Egal ob ich es mit

_objekt.eigenschaft = wert
oder
_objekt["eigenschaft"] = wert
probiere
Die einzige Möglichkeit mit der es mir bisher gelungen ist, ist die Zuweisung eines Objektliterals bei der Deklarierung der Objektvariablen. Also statt

private var MemberOfRow:Object;
schreibe ich
private var MemberOfRow:Object = {A: new Array(1, 15, 8)};

Dann klappt es seltsamerweise. Aber es muss doch möglich sein, nachträglich Eigenschaft/Werte-Paare hinzuzufügen. In der oben verlinkten Adobe-Seite wird als Beispiel
Code:
var myAssocArray:Object = {fname:"John", lname:"Public"};
trace(myAssocArray.fname); // Ausgabe: John
trace(myAssocArray["lname"]); // Ausgabe: Public
myAssocArray.initial = "Q";
trace(myAssocArray.initial); // Ausgabe: Q
genannt und analog habe ich das in meinem Code auch probiert. Aber ich erhalte als Ausgabe immer ein "undefined".

Hier mein Code:

Code:
class Grid extends MovieClip {
	private var VerRowMember:Array;
	private var FalRowMember:Array;
	private var RisRowMember:Array;
	
	private var MemberOfRow:Object;
	
	public function Grid() {
		VerRowMember = new Array(new Array("A", "B", "C"), new Array("D", "E", "F", "G"), new Array("H", "I", "J", "K", "L"), new Array("M", "N", "O", "P"), new Array("Q", "R", "S"));
		FalRowMember = new Array(new Array("H", "M", "Q"), new Array("D", "I", "N", "R"), new Array("A", "E", "J", "O", "S"), new Array("B", "F", "K", "P"), new Array("C", "G", "L"));
		RisRowMember = new Array(new Array("A", "D", "H"), new Array("B", "E", "I", "M"), new Array("C", "F", "J", "N", "Q"), new Array("G", "K", "O", "R"), new Array("L", "P", "S"));
		
		this.MemberOfRow.A = new Array(1, 15, 8);


		trace ("A ist Mitglied der Reihen" + this.MemberOfRow.A);
	}

Wo ist mein Denkfehler? :confused:
 
Hi,

es genügt nicht, die Variable "MemberOfRow" als Object zu typisieren, Du musst sie auch als neues Objekt deklarieren:
Code:
class Grid extends MovieClip {
	private var VerRowMember:Array;
	private var FalRowMember:Array;
	private var RisRowMember:Array;
	
	private var MemberOfRow:Object;
	
	public function Grid() {
		VerRowMember = new Array(new Array("A", "B", "C"), new Array("D", "E", "F", "G"), new Array("H", "I", "J", "K", "L"), new Array("M", "N", "O", "P"), new Array("Q", "R", "S"));
		FalRowMember = new Array(new Array("H", "M", "Q"), new Array("D", "I", "N", "R"), new Array("A", "E", "J", "O", "S"), new Array("B", "F", "K", "P"), new Array("C", "G", "L"));
		RisRowMember = new Array(new Array("A", "D", "H"), new Array("B", "E", "I", "M"), new Array("C", "F", "J", "N", "Q"), new Array("G", "K", "O", "R"), new Array("L", "P", "S"));
		
		this.MemberOfRow = new Object();
		
		this.MemberOfRow.A = new Array(1, 15, 8);

		trace ("A ist Mitglied der Reihen " + this.MemberOfRow.A);
	}
}

Gruß
.
 

Neue Beiträge

Zurück