Zugriff auf ein Objekt

SaschaT

Mitglied
Hallo,


In meinem Projekt habe ich Symbole ("Row") mit Instanznamen "Row1", "Row2" etc., die nur ein dynamisches Textfeld ("Score") enthalten. Diese Row-Symbole sind mit der AS-Klasse Row.as verknüpft.

Die Klassendefinition von Row.as sieht momentan so aus:
Code:
class Row extends MovieClip {
	var stopValue:Number;
	var currentValue:Number;
	
	public function Row() {
		this.stop();
		this.stopValue = 0;
		this.currentValue = 0;
	}
	

	public function countUp(i:Number):Void {
		this.stopValue = i;
		trace ("Reihenname: " + this._name);
		trace ("Übergebener Wert: " + i);
		trace ("Score (mit _root.myGrid.Row8.Score.text ausgelesen: " + _root.myGrid.Row3.Score.text);
		//trace ("Score (mit this.Score.text ausgelesen: )" + this.Score.text);
		
		
	}
}

Mit der absoluten Pfadangabe "_root.myGrid.Row8.Score.text" kann ich den Inhalt des Textfeldes Score in einer bestimmten Instanz von Row auslesen. Wenn ich aber den Inhalt des Textfeldes der jeweiligen Symbolinstant, in der ich mich befinde mit "this.Score.text" auslesen will, bekomme ich den Fehler

There is no property with the name 'Score'.
trace ("Score (mit this.Score.text ausgelesen: )" + this.Score.text);

Das verstehe ich aber irgendwie nicht. Dass es über die absolute Pfadangabe klappt beweist doch, dass die Instanzen von "Row" die Property "Score" kennen. Wo liegt der Fehler bei "this.Score.text"?
 
Hi,

aus dem Stehgreif:
Code:
class Row extends MovieClip {
	var stopValue:Number;
	var currentValue:Number;
	var Score:TextField;
wenn das nichts bringt, muss ich das nachher mal kompilieren und testen.

Gruß
.
 
Oh, die explizite Deklarierung hat tatsächlich geholfen. Danke.:)

Finde ich aber ziemlich verwirrend irgendwie, dass die absolute Referenzierung auch ohne Deklaration geht - die relative mit "this" aber verweigert wird. Oder hab ich hier ein grundsätzliches Verständnisproblem?
 
Oder hab ich hier ein grundsätzliches Verständnisproblem?
Denke ich eher nicht: Ich kann mir das auch nur so erklären, dass Du beim Zugriff über den absoluten Pfad auf AS1.0 - Eigenschaften zurückgreifst. OOP in dieser Form war ja in AS2.0 neu und musste in den bisherigen Parser integriert werden (erst mit AS3.0 wurde konsequent aufgeräumt), so dass es noch ein paar Inkonsequenzen gab. ;)

Ein Beispiel:
Code:
trace(_root.foo.bar);
wirft auch beim Export für AS2.0 keinen Kompilierungsfehler aus; der Zugriffsversuch auf undeklarierte Variablen innerhalb einer Klasse schon (weil OOP in dieser Form das fordert). In Flash 7 wurde noch beides unter einen Hut gebracht ...

Gruß
.
 

Neue Beiträge

Zurück