Erstens, hier ist ein wenig von einer Hintergrundgeschichte. Ich benutze die Game Engine Stentlic (die Schnittstelle kann mit Scratch verglichen werden), um grundlegende Spielentwicklung mit zu lehren. Leider, da es sich um ein eher kleines Team handelt, fehlen mir noch ein paar nützliche Funktionen, daher habe ich beschlossen, eigene Erweiterungen dafür zu erstellen. Ich kenne mich in C#, Java und UnityScript aus, aber diese Erweiterungen müssen in Haxe geschrieben werden. Ich habe bereits ein paar Tage damit verbracht, meine Antworten auf der API-Seite zu finden, aber das ist weit über meine Erfahrung hinaus.Kann nicht auf Funktion in statische Methode/stackoverflow Fehler zugreifen - Haxe
Das erste Problem ist, dass ich einfach versuche, ein paar Kartenfunktionen zu verwenden, aber die Methoden sind alle statisch. Jedes Mal, wenn ich versuche, eine Funktion wie mapCount()
in Zeile 16 zu verwenden, wird es mir einen Fehler sagen: Cannot access controls in static function
. Bisher habe ich herausgefunden, dass dies daran liegt, dass ich nicht-statische Funktionen nicht von einer statischen Methode aus aufrufen kann, aber ich habe keine Ahnung, wie ich das angehen soll (und wahrscheinlich weitere Probleme wie diese in der Zukunft).
Das zweite Problem ist, dass, wenn ich Zeile 14 auskommentiere und Zeile 16 auskommentiere, das Spiel gut kompiliert, aber mit einem Stackoverflow-Fehler abstürzt. Die Argumente für diese Funktion sind: createRecycledActor(actorType, x, y, layerPosition)
Hier ist der aktuelle Stand meines Skripts, im Moment nicht viel zu tun, aber ich nehme babysteps um mich in dieser neuen Sprache zu lernen. Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen!
Ps, funktioniert die Trace-Funktion in Zeile 15 gut btw.
Das macht absolut Sinn! Ich habe noch nie mit statischen Variablen gearbeitet, und soweit ich mich erinnern kann, sind diese Variablen nicht in der Lage, den Wert zu ändern, wenn sie einmal als statische Variable initiiert wurden. Das hat mich davon abgehalten, sie statisch zu machen. Kannst du mir vielleicht erklären, was ich hier falsch verstehe? Wie für den Stackoverflow Fehler habe ich gerade dieses Problem herausgefunden. Der Akteur, den ich mit dieser Funktion erstelle, ist mit demselben Skript verbunden, so dass dieser Code jedes Mal, wenn der artikulierte Darsteller auftaucht, immer wieder abläuft. Total mein Schlechter! – sdieters
Sowohl statische als auch nicht statische (Member-) Variablen können geändert werden. Angenommen, 'controls' ist jetzt eine statische Variable, sagen Sie einfach' controls = new Map() 'in Ihrer Funktion, um ihren Wert in eine neue Map zu ändern (oder' MobileGameKit.controls = new Map() 'wenn Sie außerhalb der Klasse sind) – KevinResoL