AS3 TypeError: Error #1007: Instanziierung versucht, auf eine nicht-Konstruktor
Aus irgendeinem Grund ich kann nicht ankommen dieses zu wirken (stark vereinfachte code, der fehlschlägt):
package com.domain {
public class SomeClass {
private static var helper:Helper = new Helper();
}
}
class Helper {
}
Kompiliert, wirft aber beim ersten Zugriff von SomeClass
:
TypeError: Error #1007: Instantiation attempted on a non-constructor.
at com.domain::SomeClass$cinit()
...
Du musst angemeldet sein, um einen Kommentar abzugeben.
+1 zu Darren. Eine weitere option ist das bewegen der
Helper
- Klasse an die Spitze der DateiSyntax error: package is unexpected.
Den nicht-Konstruktor Fehler wird der compiler unangenehme Art zu sagen 'Sie als einen Konstruktor für eine Klasse habe ich noch nicht gesehen'; wenn er ein bisschen schlauer, es könnten überprüfen Sie die Datei (compilation unit) für die interne Klassen, bevor beschweren... mehhh
Sehen, wie Sie Ihre statische variable
private
Zugang, natürlich, Sie beabsichtigen, verwenden Sie nur die Instanz intern zuSomeClass
(Annahme; könnte übergeben, als Rückgabewert).Folgende Lösung verzögert die Erstellung der statischen var zu, wenn die interne Klasse initialisiert wird, d.h. wenn der (vermutlich implizite)
Helper.cinit()
aufgerufen wird, anstattSomeClass.cinit()
wennHelper
noch nicht vorhanden:Ich denke, es kann nicht funktionieren mit Helfer und SomeClass beide in der selben Datei.
Wenn SomeClass initialisiert ist, ist der Helper-Klasse wurde nicht initialisiert, noch nicht, und so ein Helper-Objekt kann nicht erstellt werden.
Umzug Helfer in einer separaten Datei sollte das problem lösen.
müssen Sie generieren einen Konstruktor und deklarieren Sie Ihre Variablen in der Klasse, nicht die Funktion:
SomeClass
bevor die statische member -helper
verfügbar ist. Auch, irgendwie komisch zu initialisieren einer statischen member in einer Instanz-Konstruktor. E. g., wenn Sie mehrere Instanzen vonSomeClass
ist, wird die statische member werden jedes mal zurückgesetzt, wenn... Nicht das, was Sie wollen. Ein weiteres Beispiel, wenn Sie eine statische Methode mithelper
, wird es zunull
bis zum, die Sie instanziierenSomeClass
mindestens einmal. Seltsam, um das Mindeste zu sagen.Helper
bevor der Konstruktor aufgerufen wird. @Wolv3r, AS3 unterstützt die implizite definition und Aufruf des no-arg-Konstruktoren