Actionscript3: Ist die variable vorhanden ist?
Ich bin ein bisschen neu in Actionscript, aber ich kann nicht herausfinden this one out. Ich habe eine Menge von der Suche über dieses Thema und habe nicht gefunden eine klare Antwort. Ich habe versucht, die folgenden Lösungen, die Menschen, die online veröffentlicht werden, aber keiner von Ihnen arbeiten.
Alle folgenden Lösungen geben den Fehler: 1120: Access of undefined property myVariable
Vorschlag #1:
try {
trace(myVariable); }
catch {
trace("your variable doesn't exist"); }
Vorschlag #2:
if (myVariable) {
trace("your variable exists!!"); }
else {
trace("it doesn't exist"); }
Vorschlag #3:
if ( myVariable == null )
trace("your variable doesn't exist");
Vorschlag #4:
if ( myVariable == undefined )
trace("your variable doesn't exist");
Wie gesagt, ich habe viele Foren Beiträge und Sachen online, dass die obigen Kommentaren sagen, Sie wird funktionieren, aber Sie alle scheinen, dass Sie mir das gleiche 1120: Access of undefined property myVariable Fehler.
Übrigens, falls Ihr Euch fragt, warum ich brauchen würde, um zu überprüfen, ob eine variable vorhanden ist oder nicht, ich bin der Planung über die übergabe-Variablen an das SWF in der URL, also muss ich sicherstellen, dass die richtigen Variablen existieren und Griff den code richtig, wenn Sie nicht bestanden.
Danke für die schnelle Antwort. Immer noch nicht wirklich daran. Der Gültigkeitsbereich der Variablen ist nur auf den oben - /root-Ebene des Skripts. Im Grunde, ich starten Sie eine neue flash-Datei, die auf dem ersten Bild füge ich folgende Aktion:
//to check for this.myVariable
if ( this.hasOwnProperty( "myVariable" ) ) {
trace("myVariable exists");
}
else
{
//Variable doesn't exist, so declare it now
trace("declaring variable now...");
var myVariable = "Default Value";
}
trace(myVariable);
Wenn ich die flash-Datei, bekomme ich diese Ausgabe:
myVariable exists
undefined
Ich hatte es erwartet:
declaring variable now...
Default Value
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dann du nimmst den falschen Ansatz. Hier ist der richtige Weg™ zu Lesen und zu überprüfen SWF-Parameter, zusammen mit der Standard-Wert, wenn Sie nicht existieren:
Warnung! Da das relais auf der 'Bühne' - Eigenschaft, Verwenden Sie diesen code entweder von der Dokument-Klasse oder nach
Event.ADDED_TO_STAGE
.LiraNuna s Antwort ist definitiv die Recht Weg, um Zugang loader-Parameter. Jedoch, die Frage zu beantworten, wie zu prüfen, die Existenz der Variablen (für die Nachwelt) besteht, erfolgt diese mit dem hasOwnProperty() Methode, die sich auf alle Objekte:
Abdecken sollten Ihre situation. Aber ich weiß nicht von irgendeiner Weise zu überprüfen, die Existenz einer variable die Art und Weise, die Sie versuchen zu tun, lediglich der Verweis direkt auf die variable. Ich glaube, Sie verweisen muss, um es durch seinen Umfang.
fenomas ist wohl richtig. (Vielleicht sollte ich ändern, meinen code zu verwenden, die Methode). Aber die Methode, die ich verwenden derzeit für die Klassen ist:
das ist nicht die eleganteste, da es Ausnahmen.
Mein Grund für die Verwendung dieser Art von code ist, dass wir tun, ein bisschen dynamischer Codierung und missbrauchen "enthält" in flex zu schreiben boilerplate-code.
trace(myVariable);
Wenn die Bühne nicht zur Verfügung, können Sie versuchen, zu extrahieren, Parameter von der Wurzel.loaderInfo.Parameter. Nehmen Sie Sorge, um zu überprüfen, ob jede Eigenschaft der Kette gleich null ist.
root
ist nicht verfügbar, wenn die DisplayObject ist nicht ein Teil der Anzeigeliste ist.Hinweis: die triple-Vergleichsoperator. Es ist ein kleiner trick, den ich lernte von meinem Javascript-Tage. Funktioniert auch in AS3, und es ist nützlich für die überprüfung, ob array-element vorhanden ist, selbst wenn der Wert null ist. Wie diese:
Ich habe das gleiche problem vor kurzem, und ich sah Möglichkeiten, um dieses Problem zu beheben. Allerdings habe ich festgestellt, dass wenn Sie registrieren Sie die variable wie so...
... dass es nicht zurücksetzen der variable, ob Sie bereits gemacht. Zum Beispiel, wenn das ist mein code in Bild 1:
Dann werden diese auf die Werte der "ich" jedes mal, wenn flash geht wieder über das gleiche Bild:
Arbeitete er in mein eigenes Projekt, und es ist VIEL weniger code als bei der vorherigen Antwort. Ich hoffe, es funktioniert für Sie, zu.