Flash CS3-Dokumentation |
|||
| Programmieren mit ActionScript 3.0 > Objektorientierte Programmierung mit ActionScript > Klassen > Aufzählungen mit Klassen | |||
Aufzählungen (Englisch „enumerations") sind benutzerdefinierte Datentypen, die Sie zur Kapselung einer kleinen Wertegruppe erstellen. ActionScript 3.0 unterstützt keine besondere Aufzählungsfunktion, wie dies in C++ mit dem Schlüsselwort enum oder in Java mit der Enumeration-Schnittstelle der Fall ist. Sie können Aufzählungen jedoch mit Klassen und statischen Konstanten erstellen. Beispielsweise verwendet die PrintJob-Klasse in der Flash Player-API eine Aufzählung mit der Bezeichnung „PrintJobOrientation", um die Wertegruppe mit „landscape" und „portrait" zu speichern. Dies wird im folgenden Code gezeigt:
public final class PrintJobOrientation
{
public static const LANDSCAPE:String = "landscape";
public static const PORTRAIT:String = "portrait";
}
In der Standardeinstellung wird eine Aufzählungsklasse mit dem Attribut final deklariert, da es nicht erforderlich ist, die Klasse zu erweitern. Die Klasse umfasst ausschließlich statische Mitglieder, daher müssen Sie keine Instanzen der Klasse erstellen. Stattdessen greifen Sie direkt über das Klassenobjekt auf die Aufzählungswerte zu. Dies wird im folgenden Codeausschnitt gezeigt:
var pj:PrintJob = new PrintJob();
if(pj.start())
{
if (pj.orientation == PrintJobOrientation.PORTRAIT)
{
...
}
...
}
Alle Aufzählungsklassen in der Flash Player-API enthalten nur Variable des Typs „String", „int" oder „uint". Der Vorteil bei der Verwendung von Aufzählungen anstelle von literalen Strings oder Zahlenwerten besteht darin, das typografische Fehler in Aufzählungen leichter zu finden sind. Wenn Sie den Namen einer Aufzählung falsch eingeben, erzeugt der ActionScript-Compiler einen Fehler. Wenn Sie literale Werte verwenden, wird der Compiler ein falsch geschriebenes Wort nicht bemerken oder eine falsche Zahl verwenden. Im vorangegangenen Beispiel erzeugt der Compiler einen Fehler, wenn der Name die Aufzählungskonstanten falsch ist. Dies wird im folgenden Codeausschnitt gezeigt:
if (pj.orientation == PrintJobOrientation.PORTRAI) // Compiler-Fehler
Der Compiler erzeugt jedoch keinen Fehler, wenn Sie den literalen Wert eines Strings falsch schreiben:
if (pj.orientation == "portrai") // kein Compiler-Fehler
Bei einer anderen Technik zur Erstellung von Aufzählungen wird ebenfalls eine separate Klasse mit statischen Eigenschaften für die Aufzählung definiert. Diese Technik unterscheidet sich jedoch insofern von der ersten, als dass jede statische Eigenschaft eine Instanz der Klasse anstelle eines Strings oder einer ganzen Zahl enthält. Im folgenden Beispielcode wird eine Aufzählungsklasse für die Tage der Woche erstellt:
public final class Day
{
public static const MONDAY:Day = new Day();
public static const TUESDAY:Day = new Day();
public static const WEDNESDAY:Day = new Day();
public static const THURSDAY:Day = new Day();
public static const FRIDAY:Day = new Day();
public static const SATURDAY:Day = new Day();
public static const SUNDAY:Day = new Day();
}
Diese Technik wird von der Flash Player-API nicht genutzt, jedoch von vielen Entwicklern verwendet, die von der verbesserten Typüberprüfung profitieren möchten, die diese Technik bietet. Beispielsweise kann eine Methode, die einen Aufzählungswert zurückgibt, den Rückgabewert auf den Datentyp der Aufzählung einschränken. Der folgende Code enthält nicht nur eine Funktion, die einen Tag der Woche zurückgibt, sondern auch einen Funktionsaufruf, die den Datentyp der Aufzählung als Typanmerkung verwendet:
function getDay():Day
{
var date:Date = new Date();
var retDay:Day;
switch (date.day)
{
case 0:
retDay = Day.MONDAY;
break;
case 1:
retDay = Day.TUESDAY;
break;
case 2:
retDay = Day.WEDNESDAY;
break;
case 3:
retDay = Day.THURSDAY;
break;
case 4:
retDay = Day.FRIDAY;
break;
case 5:
retDay = Day.SATURDAY;
break;
case 6:
retDay = Day.SUNDAY;
break;
}
return retDay;
}
var dayOfWeek:Day = getDay();
Sie können die Day-Klasse auch erweitern, sodass sie jedem Wochentag eine ganze Zahl zuweist und eine toString()-Methode bereitstellen, die eine Zeichenfolge mit dem Wochentag zurückgibt. Sie können die Day-Klasse jetzt zur Übung auf diese Weise erweitern.
Flash CS3
Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht
Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/main/00000065.html