Klasse von externem Film aufrufen (MX)

CoRe

Mitglied
Hi mein Problem ist folgendes:

Ich hab eine Klasse definiert und auf diese möchte ich dann von beliebiger Stelle zugreifen können.
Die Klasse habe ich in einer externen SWF in einem Movieclip, den ich dann reinlade. Aber das soll zuerst mal unbeachtet gelassen werden.
Was ja schon nicht geht, ist folgendes:
Ich hab die Klassendefinition in einem MovieClip. Wo ich sie auch eine globale Instanz erstelle.
Von dem darunterliegenden Film, also dem Hauptfilm will ich dann auf die Instanz zugreifen.
Das geht aber nicht :(

Hier der Code der Klassendefinition im MovieClip:


PHP:
// CLASS: var_optional
// -----------------------------------------

function var_optional() {
		var param_pos = this.param_pos;
		var set_pos = this.set_pos;
		var param_error_new = this.param_error_new;
		this.pos = -1;	//Aktuelle Position im Array mit den Zusatzvariablen
		this.pos_setted = false;	// Wird gesetzt, falls manuell die Position geändert wurde => mögl. vorherige Pos leer
		this.vars = new Array();
		this.error = "";
}

var_optional.prototype.getVars = function(param_pos) {
	// Ohne Parameter gibt die Funktion den Wert der als letztes geschriebenen Variable zurück	
	
	if (param_pos == undefined) return this.vars[this.pos];			
	else {
		if (this.vars[param_pos] != undefined) return this.vars[param_pos];
			else {
				this.SetError("Variable unter der Position "+param_pos+" nicht gefunden! Falsche Positionsangabe!");	
				return undefined;
				}
		}	
}
		
var_optional.prototype.getError = function() {
	if (this.error != "") {				
		trace (this.error);
		return error;
		}
		else {
			trace ("#NO ERROR");
			return -1;		
			}
}
var_optional.prototype.setVars = function(param_wert, set_pos) {	
	this.pos++;

	if (set_pos != undefined) {
			if (typeof(set_pos) != "number") this.setError("Das Argument set_pos ist keine Zahl.");		//Fehlerbehandlung		
		
			this.pos = set_pos;
			this.pos_setted = true;
		}
		else {
			setted_pos = this.pos;
			}
	
	this.vars[set_pos] = param_wert;
	return this.pos;
}
var_optional.prototype.setError = function(param_error_new) {
	this.error = "#Error: "+param_error_new;
	trace (this.error);
}

trace("KLASSENDEFINITION var_optional - geladen");



//prototype Objekt
// -----------------------------------------
//__proto__ = Object.prototype

trace ("IN der Klasse");
_global.opt_vars = new var_optional();	//Instanz für Optionale Variablen erzeugen

test = _global.opt_vars.setVars("test");
trace ("test Pos: "+test);
test = _global.opt_vars.setVars("test2", 5);
trace ("test2 Pos: "+test);

test=_global.opt_vars.getVars();
trace ("getVars(): "+test);
test=_global.opt_vars.getVars(5);
trace ("getVars(5): "+test);
_global.opt_vars.getError();
trace ("Ende");

//stop();

Und hier nun der Code auf dem Hauptfilm um auf die Instanz zu zugreifen:

PHP:
trace("var_opt Anwendung");

test1 = _global.opt_vars.setVars("test");
trace ("test Pos: "+test1);
test = _global.opt_vars.setVars("test", 5);
trace ("test Pos: "+test);

test=_global.opt_vars.getVars();
trace ("getVars(): "+test);
test=_global.opt_vars.getVars(5);
trace ("getVars(5): "+test);
_global.opt_vars.getError();

trace ("var_opt Anwendung Ende");
stop();

Ich sitzte da schon ewig davor!
BITTE HILFE!

BIIIIIGGGG THX für Hilfe!

MfG

CoRe
 
Hi,

liegt der zugeladene Film in einem Container auf _root (_level0) oder auf einer Stufe (_level1,2,3...) ? _global ist in Flash nämlich nicht wirklich sehr global....

Grüsse
B
 
Nein tut er nicht.

Ich habs allerdings auch schon ohne "_global" mit "_root" probiert.

Und was auch ebenfalls versucht hab.

Ich hab nen Movieclip gemacht in dem die Klasse ist, und dann im Hauptfilm, hab ich dann die Befehle zum Anwenden verwendet.
Da hab ich dann DIREKT den Film an gesprochen gings auch net.
Hab dann die Instanz in der Klassendef gemacht.
Wenn ich die Klasse im selben Movieclip anspreche gehts.
Nur von außen net :(

Also movieclip mit klassendef names z.b. : mc_class_def

mc_class_def.opt_vars.setVars("test"); //Beispielsweise


Das geht auch net :(
 
Hmmm,

versuchs mal im OOP Forum von Flashforum.de, weil ich zB hab bis Mittwoch absolut keine Zeit....


B
 
Zurück