Missverständnis bei Objektinstanziierung [AS3]...

SonMiko

Erfahrenes Mitglied
Hallo,

hab mal wieder eine kurze Frage die mich irgendwie beschäftig und die sich wohl nicht lösen lässt.

Nehmen wir an das dies der Code ist:

Hauptzeitleiste:
Code:
stop();
import meineKlasse;

var mK:meineKlasse = new meineKlasse();

Klasse
Code:
package{	

import flash.display.MovieClip;

	public class meineKlasse{			
		
			function meineKlasse(){
				
				var myClip:MovieClip = new MovieClip();		
				
			}			
	}	
}

Jetzt stellt sich mir die quälende Frage: wo ist das "myClip" Objekt?
Es entsteht quasi mit dem eigentlichen instanziieren des Objektes "mK",
und sollte demnach doch teil davon sein (mk.myClip ) oder nicht?
Zudem hat das "myClip" Objekt sämtliche MovieClip eigenschaften -
wie kann ich zu meinem besseren Verständnis beispielsweise auf die X oder Y Koordinaten des besagten Objektes zugreifen?

Habe schon "trace(mK.myClip.x)" sowie "trace(mK.x)" probiert

mK.x sollte es nicht geben - und das sagt der Compiler logischerweise auch -
schließlich ist "meineKlasse" nicht um die Eigenschaften und Fähigkeiten eines MovieClip Objektes erweitert worden - es gibt also keine Koordinaten.

Aber irgendwo gibt es das Objekt "myClip" - bloß wo :D?

Besten Gruß,

Mike
 
Hallo,

du musst dich auf den Gültigkeitsbereich der Variable achten. In Bezug auf Klassen gibts zwei verschiedene Arten von Variablen: Lokale, in Funktionen mit dem Schlüsselwort var instanzierte Variablen, die nachdem die Funktion abgearbeitet ist, verworfen werden, ein Beispiel wäre ein Iterator, den man nur für ein Schlaufenkonstrukt benötigt. Die anderen Variablen sind die Eigenschaften oder Member, die im Kopf der Klasse angegeben werden und danach im ganzen Klassen-Body und je nach Freigabe auch für externen Zugriff gültig sind.

In deinem Beispiel müsstest du die Variable myClip wie folgt implementieren:
Code:
package{	

import flash.display.MovieClip;

	public class meineKlasse{			
			
		public var myClip: MovieClip;
	
		function meineKlasse(){
			myClip = new MovieClip();		
		}			
	}	
}

//Zugriff
var mK: meineKlasse = new meineKlasse();
trace (mK.myClip.x);

Gruss
 
Zurück