Compiler-Warnmeldungen kennzeichnen einen Code, der zwar gültig ist und erfolgreich kompiliert werden kann, aber eventuell nicht das ausführt, was der Autor beabsichtigt. Um diese möglichen Probleme erfassen zu können, kompilieren Sie ActionScript-Projekte im Warnmodus.
Bei einigen dieser Warnmeldungen (z. B. "Fehlende type-Deklaration.") können Sie einen Codierungsstil optional erzwingen. Andere Warnmeldungen (z. B. "Unlogische Zuweisung zu null.") weisen darauf hin, dass Anweisungen zwar gültig sind, sich aber wahrscheinlich nicht in der Weise verhalten, wie es der Benutzer erwartet. Eine dritte Klasse von Warnmeldungen deckt Probleme ab, die beim Portieren von ActionScript 2.0-Code in ActionScript 3.0-Code auftreten können.
| | Code | Nachricht | Beschreibung |
| | 1009 | _ '_' hat keine Typdeklaration.
|
Das Nichtdeklarieren eines Datentyps ist eine Codierungsstil-Präferenz. Der Rückgabetyp einer Funktion, eines Parameters oder einer Variablen wurde nicht deklariert. Durch das Verwenden von Typdeklarationen kann der Compiler effizienteren Code schreiben und mehr Fehler während der Kompilierung erfassen. Aktivieren Sie diese Warnmeldung, wenn Sie daran erinnert werden möchten, dass Sie keine Typdeklaration verwendet haben.
|
| | 1013 | Variable des Typs _ können nicht nicht definiert sein. Der Wert 'undefined' wird vor dem Vergleich in den Typ _ konvertiert.
|
Nur Variablen des Typs * können undefiniert sein. Bis auf wenige Ausnahmen haben nicht initialisierte Variablen den Standardwert null, und nicht undefined. Zu diesen Ausnahmen gehören: Boolean-Variablen, die den Standardwert false aufweisen. Number-Variablen, die den Standardwert NaN aufweisen, und int- oder uint-Variablen mit dem Standardwert 0.
|
| | 1031 | Migrationsproblem: Das Ergebnis der neuen _ ist der Rückgabewert von _, und nicht eine neue Instanz dieser Funktion.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. Der erfasste Code verhält sich in ActionScript 3.0 anders als in ActionScript 2.0. Dies wird in dem folgenden Beispiel veranschaulicht:
function f(){
this.b = 22;
this.a = new Array(2);
this.a[0] = 33;
this.a[1] = 44;
return a;
}
// Dies gibt eine neue Instanz von f in Actionscript 2.0 und einen neuen Array mit 2 Elementen in ActionScript 3.0 zurück.
var d = new f(); // Warnung hier eingeben
trace(d.a); // nicht definiert in ActionScript 3.0, [33,44] in ActionScript 2.0.
|
| | 1035 | Verwendung von Boolean() ohne Argumente.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. Die Funktion Boolean() gibt in ActionScript 3.0 false, und in ActionScript 2.0 undefined zurück.
|
| | 1039 | Migrationsproblem: Wenn die Funktion Number('') mit einem leeren String-Argument aufgerufen wird, gibt sie in ActionScript 3.0 '0' zurück und NaN in ActionScript 2.0.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. Die mit einem String-Argument aufgerufene Methode Number() überspringt alle Leerstellen in der Zeichenfolge und gibt den Standardwert '0' zurück, wenn keine Ziffern erfasst werden. In ActionScript 2.0 wird bei Leerstellen in der Zeichenfolge NaN als Ergebnis zurückgegeben.
|
| | 1045 | Migrationsproblem: Array.toString()-Verarbeitung von 'null'- und 'undefined'-Elemente wurde geändert.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. In ActionScript 2.0 werden null-Arrayelemente in null und undefined-Elemente in undefined konvertiert. In ActionScript 3.0 werden null- und undefined-Elemente in die leere Zeichenfolge '' konvertiert. Wenn Sie Code haben, der die toString()-Ausgabe von einem Array parst, müssen Sie den Code möglicherweise an diesen Unterschied anpassen.
|
| | 1059 | Migrationsproblem: Die Eigenschaft _ wird nicht länger unterstützt. _.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. Die Eigenschaft, die Sie verwenden möchten, existiert in ActionScript 3.0 nicht.
|
| | 1061 | Migrationsproblem: Die Methode _ wird nicht mehr unterstützt. _.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. Die Methode, die Sie verwenden möchten, existiert in ActionScript 3.0 nicht.
|
| | 1066 | __resolve wird nicht mehr unterstützt. | |
| | 1067 | Migrationsproblem: __resolve wird nicht mehr unterstützt. Verwenden Sie die neue Proxy-Klasse, um eine ähnliche Funktion umzusetzen.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. Weitere Informationen zur Ersetzung für __resolve finden Sie unter "Proxy" in diesem Referenzhandbuch.
|
| | 1071 | Migrationsproblem: '_level' wird nicht mehr unterstützt. Weitere Informationen hierzu finden Sie im flash.display-Paket.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. Die Eigenschaft, die Sie verwenden möchten, existiert in ActionScript 3.0 nicht.
|
| | 1073 | Migrationsproblem: _ ist keine dynamische class. Instanzen können keine Mitglieder dynamisch hinzugefügt werden.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. In ActionScript 2.0 sind viele Klassen wie z. B. 'Number' dynamisch, was bedeutet, dass neue Eigenschaften zur Laufzeit den Instanzen dieser Klassen hinzugefügt werden können. Diese Warnmeldung wird erzeugt, wenn ein Code versucht, einer Instanz einer nichtdynamischen Klasse eine Eigenschaft hinzuzufügen.
|
| | 1083 | Migrationsproblem: Methode _ verhält sich in ActionScript 3.0 anders wegen der Änderung des Gültigkeitsbereichs für dieses Schlüsselwort. Weitere Informationen finden Sie im Eintrag für Warnung 1083.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. Diese Warnmeldung wird erzeugt, wenn eine Methode eines Objekts als Wert verwendet wird (häufig als eine Rückruffunktion). In ActionScript 2.0 werden Funktionen in dem Kontext ausgeführt, aus dem sie aufgerufen wurden. In ActionScript 3.0 werden Funktionen immer in dem Kontext ausgeführt, in dem sie definiert wurden. Deshalb werden die Variablen- und Methodennamen für die Klasse, zu der der Rückruf gehört, aufgelöst anstatt relativ zu dem Kontext, aus dem er aufgerufen wurde, wie im folgenden Beispiel:
class a
{
var x;
function a() { x = 1; }
function b() { trace(x); }
}
var A:a = new a();
var f:Function = a.b; // Warnung wird hier ausgelöst
var x = 22;
f(); // druckt 1 in ActionScript 3.0, 22 in ActionScript 2.0
|
| | 1085 | _ erhält den Gültigkeitsbereich des Standard-Namespace: _ intern. Wird außerhalb dieses Pakets nicht sichtbar sein.
|
Das Nichtdeklarieren eines Namespace ist eine Codierungsstil-Präferenz. Aktivieren Sie diese Warnmeldung, wenn Sie daran erinnert werden möchten, dass vergessen wurde, einen Namespace oder Zugriffsbezeichner für eine Definition zu deklarieren. Ohne einen solchen Bezeichner ist die Definition nicht für Code sichtbar, der sich außerhalb dieser Datei befindet. Damit die Variable auch für Code außerhalb dieser Datei sichtbar ist, deklarieren Sie sie mit dem Zugriffsbezeichner public oder mit einer Namespace-Deklaration. Deklarieren Sie die Definition als private, um die Definition lokal in dieser Datei zu verwenden und das Anzeigen diese Warnmeldung zu vermeiden.
|
| | 1087 | Migrationsproblem: ActionScript 3.0 durchläuft die Objekteigenschaften in einer "for x in target"-Anweisung in zufälliger Reihenfolge.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. In ActionScript 2.0 ist die Reihenfolge, in der die Eigenschaften eines Objekts verarbeitet werden, immer gleich. In ActionScript 3.0 ist die Reihenfolge jedoch zufällig und kann auf jedem Computer anders sein. Wenn ein unerwartetes Reihenfolgeverhalten auftritt, prüfen Sie diese Schleife, um festzustellen, ob sich diese Änderung auf Ihren Code auswirkt.
|
| | 1089 | Fehlercode: _.
|
Diese Warnmeldung wird entweder durch eine ungültige Quelldatei oder einen Programmierfehler im Compilercode erzeugt. Bitte wenden Sie sich an Adobe, Inc., um diesen Bug zu melden.
|
| | 1091 | Migrationsproblem: _
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. In ActionScript 2.0 führt das Deklarieren einer Methode über einen bestimmten Namen (z. B. onMouseDown) dazu, dass Flash diese Methode aufruft, wenn ein bestimmtes Ereignis auftritt. In ActionScript 3.0 müssen Sie addEventListener() mit einer Methode aufrufen, um sie zum Empfangen des Ereignisses zu registrieren. Weitere Informationen finden Sie unter addEventListener in diesem Referenzhandbuch.
|
| | 1093 | Negativer Wert verwendet, wo ein uint (nicht negativer) Wert erwartet wird.
|
Das Zuweisen eines negativen Werts zu einem uint-Datentyp führt zu einem extrem hohen positiven Wert. var x:uint = -1; trace(x); // 4294967295.
|
| | 1097 | Unlogischer Vergleich mit "null". Variablen des Typs _ können nicht null sein.
|
Instanzen von Boolean, int, uint und Number können nicht null sein. Der Vergleichsoperator konvertiert null in false vor dem Vergleich mit dem Datentyp Boolean oder in 0 vor dem Vergleich mit dem Datentyp Number, int oder uint.
|
| | 1099 | Unlogischer Vergleich mit NaN. Diese Anweisung wird immer mit 'false' bewertet.
|
NaN besitzt eine einmalige mathematische Eigenschaft, die dafür sorgt, dass jeder Vergleich mit NaN als false ausgewertet wird. Verwenden Sie die globale Funktion isNaN(), um stattdessen einen NaN-Wert zu erfassen. Dies wird im folgenden Beispiel veranschaulicht:
trace(NaN == NaN); // false!
trace(NaN != NaN); // wieder false!
trace(isNaN(NaN)); // true
|
| | 1101 | Zuweisung innerhalb einer Bedingung. Meinen Sie == statt =?
|
Das Ergebnis einer =-Zuweisungsanweisung ist der Wert der rechten Seite der =-Anweisung. Sie können mit einer Zuweisungsanweisung prüfen, ob bestimmte Bedingungen erfüllt werden, jedoch wird von dieser Vorgehensweise abgeraten. In der Regel ist diese Warnmeldung das Ergebnis eines Tippfehlers, wenn ein ==-Gleichheitstest beabsichtigt war. Dies wird in dem folgenden Beispiel veranschaulicht:
var x:Boolean = false;
var y:Boolean = true;
// es ist schwer zu sagen, ob die nächste Zeile absichtlich den Wert von x auf den von y festlegt, oder ob es ein Tippfehler ist
if (x = y) { trace("x is assigned y's value of true, making the conditional test evaluate as true."); }
|
| | 1103 | Es wurde null verwendet, wo ein _-Wert erwartet wurde.
|
Boolean, Number, int- und uint-Variablen kann nicht null als Wert zugewiesen werden. Der Wert null wird in false konvertiert, wenn er einer Boolean-Variablen zugewiesen wird, und in 0, wenn er einer Variablen des Typs int, uint oder Number zugewiesen wird.
|
| | 1105 | Es wurde keine Konstruktorfunktion für class _ festgelegt.
|
Das Nichtdeklarieren einer Konstruktorfunktion ist eine Codierungsstil-Präferenz. Aktivieren Sie diese Warnmeldung, wenn Sie immer Konstruktoren für Klassen deklarieren möchten. Diese Warnmeldung soll dabei helfen, Fälle zu finden, bei denen ein Klassenname geändert wurde, der zugehörige Konstruktorname jedoch nicht. Ein solcher Zustand wird ohne diese Warnmeldung nicht als Problem gekennzeichnet. Der frühere Konstruktor scheint eine normale Funktion zu sein.
|
| | 1111 | Die Konstante wurde nicht initialisiert. | |
| | 1113 | Array(x) verhält sich wie das neue Array(x). Um einen Wert in den Typ Array zu konvertieren, verwenden Sie den Ausdruck x as Array statt Array(x). | |
| | 1115 | Die super()-Anweisung wird vor der Eingabe dieses Konstruktors ausgeführt. Fügen Sie einen Aufruf von super() innerhalb des Konstruktor hinzu, wenn Sie ausdrücklich steuern möchten, zu welchem Zeitpunkt er ausgeführt werden soll.
|
Das Hinzufügen eines Aufrufs von super() innerhalb des Konstruktors ist eine Codierungsstil-Präferenz. Aktivieren Sie diese Warnmeldung, wenn super() ausschließlich explizit aufgerufen werden soll. Dies Warnmeldung soll dabei helfen, Fälle zu erfassen, in denen super() nach einem lokalen Initialisierungscode aufgerufen werden soll, jedoch vergessen wurde, es hinzuzufügen.
|
| | 3552 | Das Anhängen von Text an ein TextField mithilfe von += ist viel langsamer als die Verwendung der Methode TextField.appendText().
|
Weitere Informationen zu dieser wichtigen Textoptimierung finden Sie in diesem Referenzhandbuch unter der Methode appendText() für die TextField-Klasse.
|
| | 3554 | Es wurde ein Funktionswert verwendet, wo Typ _ erwartet wurde. Möglicherweise fehlen die Klammern () nach dieser Funktionsreferenz.
|
In ActionScript können Sie Funktionen als Werte verwenden. Der betreffende Code verwendet einen Wert des Typs Function, obwohl ein anderer Typ als Function, Object oder * erwartet wird. Normalerweise weist diese Warnmeldung auf einen Tippfehler hin, bei dem die Klammern () nach einem Funktionsnamen vergessen wurden.
|
| | 3556 | Der instanceof-Operator wurde verworfen, verwenden Sie stattdessen den is-Operator. | |
| | 3574 | Migrationsproblem: Die ActionScript 2.0-Klasse XMLDoc wurde umbenannt in XMLDocument.
|
Hierbei handelt es sich um eine Warnmeldung bei der Codemigration. XML ist in ActionScript 3.0 eine andere Klasse als in ActionScript 2.0. In ActionScript 3.0 entspricht die XMLDocument-Klasse der XML-Klasse in ActionScript 2.0. Die XML-Klasse in ActionScript 3.0 weist eine verbesserte Funktionalität mit einer einfacheren und leistungsstärkeren API auf. Weitere Informationen finden Sie im ActionScript-Referenzhandbuch unter "XML".
|
| | 3576 | Date(x) verhält sich wie das neue Date().toString(). Um einen Wert in den Typ Date zu konvertieren, verwenden Sie "x as Date" statt Date(x). | |
| | 3582 | Das Importieren eines Pakets mit demselben Namen wie die aktuelle Klasse verbirgt diesen Klassenbezeichner in diesem Gültigkeitsbereich. | |
| | 3584 | Es wurden mehrere Argumente mit dem Namen '_' angegeben. Verweise auf dieses Argument werden immer für das letzte Argument aufgelöst. | |
| | 3590 | Ein nicht-boolescher Wert wurde verwendet, wo ein boolescher Wert erwartet wurde. | |
| | 3591 | _ wurde verwendet, wo ein boolescher Wert erwartet wurde. Der Typ des Ausdruck wird in Boolean umgewandelt. | |
| | 3593 | _ ist keine erkannte Eigenschaft der dynamischen Klasse _.
|
Im strikten Kompilierungsmodus werden Instanzen dynamischer Klassen nicht auf nicht definierte Eigenschaften geprüft. Die Datentypen Date, RegExp und Error sind aus Gründen der Abwärtskompatibilität mit ECMAScript dynamisch. Diese Warnmeldung wird angezeigt, wenn Instanzen dieser Klassen nicht definierte Eigenschaften aufweisen. Häufig entsteht ein Problem durch den Versuch, eine nicht vorhandene year-Eigenschaft eines Date-Wertes abzurufen oder einzustellen. Der korrekte Name dieser Eigenschaft lautet fullYear.
|
| | 3595 | _ ist keine erkannte Methode der dynamischen Klasse _.
|
Im strikten Kompilierungsmodus werden Instanzen dynamischer Klassen nicht auf nicht definierte Methoden geprüft. Die Typen Date, RegExp und Error sind aus Gründen der Abwärtskompatibilität mit ECMAScript dynamisch. Diese Warnmeldung wird angezeigt, wenn Instanzen dieser Klassen nicht definierte Methoden aufweisen.
|
| | 3597 | Duplizierte Variablendefinition.
|
Der Compiler hat eine doppelt vorhandene Definition für eine Variable gefunden. Dies kann zu unerwarteten Ergebnissen führen. ActionScript unterstützt die Festlegung von Gültigkeitsbereichen für Variablen auf Blockebene nicht. Alle Variablen, die innerhalb einer Funktion definiert wurden, bestehen innerhalb desselben Gültigkeitsbereichs, selbt wenn sie innerhalb einer if-Anweisung, while-Anweisung, for-Anweisung usw. definiert sind: In dem folgenden Beispielcode wird die Variable x zweimal deklariert:
function test() {
var x:Number = 10;
if (true) {
for (var x=0; x < 5; x++) // hier Warnung einfügen, dies ist die zweite Definition von x
trace(x);
}
trace(x); // 5, nicht 10. Der letzte Wert, der von der for-Schleife oben festgelegt wurde, ist der aktuelle Wert von x
}
|
| | 3598 | Definitionsname ist mit dem importierten Paketnamen identisch. Nicht qualifizierte Verweise auf diesen Namen lösen das Paket, nicht die Definition auf. | |
| | 3599 | Definitionsname ist mit dem importierten Paketnamen identisch. Nicht qualifizierte Verweise auf diesen Namen lösen das Paket, nicht die Definition auf.
|
Weist eine Definition den gleichen Namen wie ein im gleichen Gültigkeitsbereich vorhandenes Paket auf, werden alle nicht qualifizierten Verweise auf diesen Namen zum Paket anstatt zur Definition aufgelöst. Dies führt zu unerwarteten Fehlern bei dem Versuch, auf die Variable zu verweisen. Jeder Verweis auf die Definition muss ein qualifizierter Verweis ein, damit er zur Definition und nicht zum Paket aufgelöst wird.
|
| | 3600 | Möglicher Versuch, eine feste Eigenschaft zu löschen. | |
| | 3601 | Die deklarierte Eigenschaft _ kann nicht gelöscht werden. Um zugeordneten Speicher freizumachen, legen Sie den Wert auf null fest.
| Delete entfernt dynamisch definierte Eigenschaften von einem Objekt. Vereinbarte Eigenschaften einer Klasse können nicht gelöscht werden, der Vorgang schlägt ohne weitere Meldung fehl. Um dieser Variable zugeordneten Speicher freizumachen, legen Sie den Wert stattdessen auf null fest. |