Jeffrey Cross
Jeffrey Cross

Konstanten in Actionscript 2.0 fälschen

Die meisten Benutzer umgehen das Fehlen konstanter Variablen durch Actionscript 2.0, indem sie lediglich Mitgliedsvariablen in Großbuchstaben benennen und daran denken, ihren Wert nicht zu ändern. Dies funktioniert in Ordnung, vorausgesetzt, Sie befolgen die Regeln. Was aber, wenn Sie einen konstanten Wert erzwingen möchten, damit er nicht zur Laufzeit geändert werden kann? Edgar De Loa hat uns heute darüber geschrieben:

Konstanten sind in ActionScript 2.0 nicht inhärent. Am nächsten ist es, etwas privat und global zugänglich zu machen. Dies verbessert jedoch nicht das Problem, da die Variable immer noch leicht geändert werden kann und die Vorstellung, dass sie konstant ist.

Ich habe eine sehr einfache Möglichkeit gefunden, Konstanten zu simulieren. Nachdem ich mich umgesehen habe, habe ich niemanden gefunden, der diese Methode vorgeschlagen und / oder verwendet hat.

Im ersten Schritt erstellen Sie eine statische Klasse und definieren eine private Variable mit dem Wert, den Sie speichern möchten. Im nächsten Schritt fügen Sie eine öffentliche Funktion hinzu, die die oben genannte private Variable zurückgibt. Wenn Sie die Funktion mit der privaten Variablen (alles in Groß- und Kleinschreibung) identisch benennen, können Sie auf die Konstante leicht zugreifen.

statische Klasse ConstantVars {private var ARRAY_SIZE = 12;

öffentliche Funktion ARRAY_SIZE () {return ARRAY_SIZE; }}

Nun kann man ConstantVars.ARRAY_SIZE () verwenden, um auf die Konstante zuzugreifen, ohne sie ändern oder entfernen zu können. Ich habe auch festgestellt, dass das Benennen der Klasse etwas einfaches, wie "Const", alles noch schneller und einfacher machen wird.

Das funktioniert, aber ich denke, wir können sogar noch eine bessere.

Wenn Sie eine statische Getter-Methode verwenden, können Sie einen erzwungenen konstanten Wert abrufen und müssen nicht auf die normale Klammernotation einer Funktion zugreifen, um darauf zuzugreifen. Sie können dies in einer globaleren statischen Klasse "Const" verwenden, wie Edgar für mehr globale Variablen beschreibt. Alternativ können Sie die statische Konstante in jede normale Klasse einkapseln. Dies ist praktisch, wenn die Konstante für eine bestimmte Klasse relevant ist (und nicht nur eine globale const-Variable).

Angenommen, Sie hatten eine Klasse, die einen Benutzer authentifiziert. Es ist keine statische Klasse. Es enthält einige Member-Variablen und einige Methoden, die sich mit der Authentifizierung und Speicherung der Berechtigungsnachweise eines Benutzers befassen. Es enthält auch einige Meldungszeichenfolgen, die für den Authentifizierungsprozess relevant sind. Sie möchten möglicherweise für andere Teile der Anwendung verfügbar sein. Sie möchten jedoch sicherstellen, dass diese Zeichenfolgen Konstanten sind und zur Laufzeit nicht versehentlich geändert werden:

Klassenauthentifizierung {private var guid; privater var Benutzername privates var-Passwort; privater var-Server;

öffentliche statische Funktion get SUCCESS_MSG (): String {return "Login erfolgreich"; } public static function get NOSUCHUSER_MSG (): String {return "Der Benutzer wurde nicht gefunden"; } public static function get SERVERERROR_MSG (): String {return "Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten"; }

public function Authentifizierung (Server, Benutzername, Kennwort) {...} public function authenticate (): String {// Führt die Authentifizierung durch und gibt eine der konstanten Fehlerzeichenfolgen zurück.} ...}

Code innerhalb Ihrer Authentication-Klasse kann jetzt direkt auf NOSUCHUSER_MSG verweisen, und Code außerhalb der Klasse kann auf die konstanten Werte auf einfache Weise wie Authentication.SERVERERROR_MSG zugreifen. In diesem Szenario kann dies sehr nützlich sein, da die Authentication-Klasse Erfolgs- / Fehlerinformationen weitergeben kann und externe Klassen wissen, was der Text bedeutet, selbst wenn er in einer anderen Übersetzung geändert wurde. Eine andere Klasse kann zum Beispiel Folgendes tun, um einen Benutzer zu authentifizieren:

Authentifizierung userauth = new Authentication (Servername, Benutzer, Pass); var result = userauth.authenticate (); if (Ergebnis! = Authentication.SUCCESS_MSG) {displayError (Ergebnis); }

Dies ist ein wirklich vereinfachtes Beispiel - und wahrscheinlich gibt es ein besseres Beispiel, das mir nicht sofort in den Sinn kam -, aber Sie haben die Idee. Reale Konstanten werden in Actionscript 3.0 mit der const-Syntax unterstützt. Wenn Sie jedoch an einem AS2-Projekt arbeiten, gibt es immer noch eine Lösung für Sie, die denselben Effekt liefert.

Aktie

Leave A Comment