Übertragen von LoadVars Variablen in lokale Klassenvariablen

Status
Nicht offen für weitere Antworten.

euphrasine

Grünschnabel
hallo zusammen,

was flash betrifft, bin ich absoluter anfänger. alleine durch stöbern in diesem forum, konnte ich mein wissen schon deutlich steigern.

nun zu meinem problem.


ich möchte aus einer windows anwendung ein (projektor-) flash modul aufrufen. hierbei möchte ich eine bestimmte anzahl parameter mitgeben. da eine direkte parameterübergabe offensichtlich nicht möglich ist, wollte ich das ganze über eine datei lösen. hierbei wollte ich funktion "LoadVars" verwenden.
innerhalb der onLoad funktion, kann ich die übergebenen variablen sehr schön anzeigen. allerdings möchte ich diese variablen auch in meine klassenvariablen übertragen, damit ich die informationen auch zugänglich machen kann.

hab schon stunden doku gelesen, gegoogled, ... und noch keine lösung für das problem gefunden. vielleicht kann mir hier jemand weiterhelfen.

unten ein code-fragment:


Code:
class loadParameterFile
{
    // Variablendeklarationen
    var fileName:String;
    var keyName:String;
    var playerMode:String;
    var timeOut:String;
    var parameterFile:LoadVars;
	
    // Konstruktor
    function loadParameterFile (pFileName:String){
		this.fileName = pFileName;
		this.keyName = "undefiniert";
		this.playerMode = "false";
		this.timeOut = "120";
		
		parameterFile = new LoadVars();

		parameterFile.load(this.fileName);

		parameterFile.onLoad = function() {
			trace(this.ext_parameter1);  // enthält keyName
			trace(this.ext_parameter2);  // enthält playerMode
			trace(this.ext_parameter3);  // enthält timeOut
                       // jetzt noch die variablen in die klassenvariablen 
                       // (keyName, playerMode, timeOut) übertragen
		}
    }
...


bin für jede hilfe dankbar
:confused:

gruß

euphrasine
 
Hallo und willkommen!

Speicher einfach eine Referenz deiner Klasse in einer lokalen Variable der Funktion und ordne die LoadVars-Member dann über diese Referenz deiner Klasse zu:

Code:
var lv = new LoadVars();
var referenz = this;
lv.onLoad = function () {
    referenz.keyName = this.ext_parameter1;
}
lv.load(filename);

gruss

PS.: Bitte beachte die Regeln für Gross- /Kleinschreibung in deinen Postings, vielen Dank!
 
Hi,

probiers so:
Code:
		parameterFile.load(this.fileName);
		
		var that = this; // temporärer Verweis auf Dein Klassenobjekt

		parameterFile.onLoad = function() {
			that.keyName = this.ext_parameter1;
			that.playerMode = this.ext_parameter2;
			that.timeOut = this.ext_parameter3:
		}
"this" verweist zwar innerhalb der onLoad-Methode auf das LoadVars-Objekt, aber lokale Variablen der Konstruktorfunktion sind an dieser Stelle noch bekannt. ;)

Gruß

EDIT: Arrgh! 11
 
hallo luke,

danke für die informationen. hab ich ähnlich auch schon probiert, klappt aber nicht. was mich wundert, ist auch daß der trace aus dem onLoad erst nach dem trace aus der klasse erscheint. wahrscheinlich wird der code aus onLoad auch erst später ausgeführt und somit wäre das verhalten klar. (siehe beispiel)

bezüglich groß-/kleinschreibung: bin leider legastheniker und nicht fähig zu erkennen, was ich groß und kleinschreiben soll! sorry!!

this.keyName = "XXX";
var refThis = this;
parameterFile = new LoadVars();
parameterFile.load(this.fileName);
parameterFile.onLoad = function() {
refThis.keyName = this.ext_parameter1;
trace("in onLoad: " + refThis.keyName); // hier stimmt der wert
}
trace("in klasse: " + this.keyName); // hier steht wieder XXX
}
 
hallo,

hab das problem gefunden. liegt offensichtlich daran, daß onLoad asynchron arbeitet.
für mein problem ist das natürlich nicht besonders schön.

ich möchte ein flash modul entweder mit parameter (aus html) aufrufen, falls keine parameter angegeben sind, möchte ich standard-werte aus einer datei lesen.
so wie onLoad funktioniert, müsste ich diese funktion als steuerung für den rest einsetzen.


gibt es andere möglichkeiten parameter synchron aus externen dateien zu laden?

gruß

euphrasine!

ps: sorry für die kleinschreibung, kann aber nicht anders! :-(
 
Hallo!

hab das problem gefunden. liegt offensichtlich daran, daß onLoad asynchron arbeitet.
Das ist richtig und gilt für den gesamten Datenaustausch zwischen Flash und externen Quellen. Das beantwortet dann wohl auch deine Frage.
Wenn die gesamte Steuerung deines Films von diesen Variablen abhängt, dann musst du den Filmstart wohl oder übel vom onLoad-Aufruf abhängig machen.

gruss
 
hallo luke,

kennst du eine möglichkeit, einem projektor-flash, parameter über die kommandozeile mitzugeben? ich mach auf jeden fall nochmal einen neuen thread bezüglich dieses
themas auf.

gruß

euphrasine
 
Status
Nicht offen für weitere Antworten.
Zurück