Homepage-Webhilfe Event-Banner

Steuerelemente

Steuerelemente sind Bestandteile einer Benutzeroberfläche und dienen zur Interaktion mit dem Bediener. Da uns bei der Verwendung des Flex SDKs das Package fl und deren untergeordnete Packages und Klassen fehlen, sind die Möglichkeiten der Steuerelemente sehr begrenzt. Trotzdem lassen sich mit den hier vorgestellten Elementen einiges anstellen. Des Weiteren sollte beachtet werden, dass in Flash-Anwendungen vor allem grafische Bestandteile und Bilder verwendet werden, welche wir in diesem und im nächsten Thema ebenfalls vorstellen werden.

Um Steuerelemente (zumeist die Basisklasse InteractiveObject) zu erzeugen, wird ein Objekt der jeweiligen Klasse instanziiert. Um das Element einem „Container“ (z. B. der Klasse Sprite) hinzuzufügen, müssen wir die Funktion addChild() aufrufen. Zur Erinnerung: Unsere Main-Klasse ist von der Klasse Sprite abgeleitet. Steuerelemente können mittels der Eigenschaften x und y positioniert werden. Beide Werte sind auf den Wert 0 voreingestellt. Die Position 0|0 befindet sich in der Ecke oben links. Die Einstellung der Größe kann mittels der Eigenschaften width und height erfolgen. Unsere Anwendung hat bisher immer die Größe von 800x600 Pixeln. Diese Einstellung kann in FlashDevelop in den Projekteinstellungen (ProjectProperties) jedoch jederzeit geändert werden. Eine weitere nützliche Eigenschaft ist visible, welche einen Wert vom Typ Boolean erwartet und es ermöglicht, das Element auszublenden. Mittels der Eigenschaft name können wir dem Steuerelement einen Namen geben. Diese Eigenschaft wird zumeist nur dann gesetzt, wenn wir später auf das Element mittels der Funktion getChildByName() des sogenannten Anzeigeobjekt-Containers (z. B. Sprite) zugreifen möchten. Das Entfernen eines Steuerelementes aus dem Container kann mittels der Funktion removeChild() durchgeführt werden. Dieser Funktion muss dabei das Objekt des zu entfernenden Steuerelements übergeben werden.


Ein Textfeld können wir mittels der Klasse TextField darstellen und erzeugen. Dieses Textfeld kann dabei nur zur Anzeige dienen (sozusagen ein „Label“), nicht änderbar jedoch selektierbar sein oder zur Eingabe durch den Benutzer verwendet werden. Über die Eigenschaft text kann der anzuzeigende Text bzw. der eingegebene Text abgerufen werden. Mittels der Eigenschaft selectable lässt sich steuern, ob der Text markiert werden kann. Standardmäßig ist dies erlaubt (Wert true). Mit der Eigenschaft type und dem Wert der statischen Konstante INPUT der TextFieldType-Klasse kann festgelegt werden, dass der Text änderbar ist.

Um die Schrifteinstellungen eines Textfelds zu ändern, müssen wir ein Objekt der TextFormat-Klasse erzeugen. Dem Konstruktor können dabei unter anderem die Schriftart (Eigenschaft font), die Schriftgröße (Eigenschaft size) und die Schriftfarbe (Eigenschaft color) übergeben werden. Weitere Eigenschaften sind u. a. bold (Fettdruck), italic (kursiver Text), underline (unterstrichener Text) und align (horizontale Ausrichtung). Zeichenketten-Konstanten für die Textausrichtung können aus der Klasse TextFormatAlign abgerufen werden. Um dem TextField-Objekt das TextFormat-Objekt zuzuweisen, können wir der Eigenschaft defaultTextFormat das TextFormat-Objekt zuweisen. Alternativ können wir auch die Funktion setTextFormat() verwenden. Hierbei muss jedoch beachtet werden, dass dieser Aufruf immer nach der Zuweisung der text-Eigenschaft erfolgen muss. Des Weiteren ist es möglich, der Funktion zwei weitere Parameter (Startindex und Endindex) zu übergeben, um somit die Formatierung nur auf einen bestimmten Teil des Texts anzuwenden.

var meinTextFormat:TextFormat = new TextFormat("Times", 30, 0xFF0000);  // 0xFF0000 = rot
meinTextFormat.bold = true;                                             // Fettdruck
meinTextFormat.italic = true;                                           // kursiver Text
meinTextFormat.align = TextFormatAlign.RIGHT;                           // rechtsbündiger Text

Mittels der Eigenschaften background (Datentyp Boolean) und backgroundColor (Datentyp uint) ist es möglich, dem Textfeld eine Hintergrundfarbe zu geben. Durch die Eigenschaft border (Datentyp Boolean) und borderColor (Datentyp uint) kann ein Rahmen eingestellt werden. displayAsPassword legt fest, ob es sich bei dem Textfeld um ein Eingabefeld für Passwörter handelt, um somit die Zeichen „verschlüsselt“ darzustellen. Wollen wir mittels der TextField-Klasse einen mehrzeiligen Text erzeugen, so muss der Wert der Eigenschaft multiline auf true gesetzt werden.

// Überschrift "Formular"
var ueberschrift:TextField = new TextField();
var ueberschriftFormat:TextFormat = new TextFormat("Arial", 50);
ueberschriftFormat.bold = true;
ueberschriftFormat.align = TextFormatAlign.CENTER;
ueberschrift.y = 20;
ueberschrift.width = 800;
ueberschrift.height = 60;
ueberschrift.selectable = false;
ueberschrift.text = "Formular";
ueberschrift.setTextFormat(ueberschriftFormat);
addChild(ueberschrift);

// Beschriftungsfelder
var beschriftungVorname:TextField = new TextField();
var beschriftungNachname:TextField = new TextField();
var beschriftungFormat:TextFormat = new TextFormat("Arial", 20);
beschriftungFormat.align = TextFormatAlign.RIGHT;
beschriftungVorname.y = 100;
beschriftungNachname.y = 140;
beschriftungVorname.width = beschriftungNachname.width = 390;
beschriftungVorname.height = beschriftungNachname.height = 30;
beschriftungVorname.selectable = beschriftungNachname.selectable = false;
beschriftungVorname.text = "Vorname:";
beschriftungVorname.setTextFormat(beschriftungFormat);
beschriftungNachname.text = "Nachname:";
beschriftungNachname.setTextFormat(beschriftungFormat);
addChild(beschriftungVorname);
addChild(beschriftungNachname);

// Eingabefelder
var eingabeVorname:TextField = new TextField();
var eingabeNachname:TextField = new TextField();
var eingabeFormat:TextFormat = new TextFormat("Arial", 20);
eingabeVorname.x = eingabeNachname.x = 410;
eingabeVorname.y = 100;
eingabeNachname.y = 140;
eingabeVorname.width = eingabeNachname.width = 150;
eingabeVorname.height = eingabeNachname.height = 30;
eingabeVorname.border = eingabeNachname.border = true;
eingabeVorname.type = eingabeNachname.type = TextFieldType.INPUT;
eingabeVorname.defaultTextFormat = eingabeFormat;
eingabeNachname.defaultTextFormat = eingabeFormat;
addChild(eingabeVorname);
addChild(eingabeNachname);
VorschauDownload

Ein Button wird in AS mittels der Klasse SimpleButton dargestellt. Die Klasse SimpleButton enthält keinen darstellbaren Bereich, jedoch können dem Button verschiedene Steuerelemente zugewiesen werden, welche angezeigt werden sollen, wenn der Button sich in einem bestimmten Status befindet. Hierfür besitzt die SimpleButton-Klasse die vier Eigenschaften hitTestState, overState, downState und upState. overState ist aktiv, wenn sich unser Mauszeiger innerhalb des Buttons bzw. innerhalb des „Erkennungsrechtecks“ befindet, die Maustaste jedoch nicht gedrückt ist. downState ist mit overState zu vergleichen, jedoch mit dem Unterschied, dass beim downState die Maustaste und somit der Button gedrückt wird. Um das Drücken des Buttons zu erkennen, müssen wir das Klick-Event registrieren (dazu jedoch später mehr). Der Status upState ist aktiv, wenn sich der Mauszeiger außerhalb der Schaltfläche (engl. button) befindet. hitTestState legt das Anzeigeobjekt bzw. Steuerelement fest, welches zur sogenannten Kollisionserkennung dient. Das Element, welches in der hitTestState-Eigenschaft festgelegt ist, wird dabei nicht durch die SimpleButton-Klasse grafisch dargestellt (außer es wurde manuell mittels addChild() zum Container hinzugefügt). Aus diesem Grund wird der Eigenschaft hitTestState oft das gleiche Objekt wie der Eigenschaft upState zugewiesen (siehe Beispiel). Mit der Eigenschaft useHandCursor wird festgelegt, ob der Hand-Cursor an Stelle des Pfeil-Cursors angezeigt werden soll. Die Standardeinstellung dieser Eigenschaft ist true.

var textAnzeigeA:TextField = new TextField();
var textAnzeigeB:TextField = new TextField();
var textAnzeigeC:TextField = new TextField();
var textFormat:TextFormat = new TextFormat("Arial", 80);

// Text
textAnzeigeA.text = "Komm her ...";
textAnzeigeB.text = "Drück mich ...";
textAnzeigeC.text = "Lass los ...";

// Hintergrund und Rahmen
textAnzeigeA.backgroundColor = 0xFF0000;
textAnzeigeB.backgroundColor = 0x00FF00;
textAnzeigeC.backgroundColor = 0x0000FF;
textAnzeigeA.background = textAnzeigeB.background = textAnzeigeC.background = true;
textAnzeigeA.border = textAnzeigeB.border = textAnzeigeC.border = true;

// Position und Größe
textAnzeigeA.x = textAnzeigeB.x = textAnzeigeC.x = 100;
textAnzeigeA.y = textAnzeigeB.y = textAnzeigeC.y = 50;
textAnzeigeA.width = textAnzeigeB.width = textAnzeigeC.width = 600;
textAnzeigeA.height = textAnzeigeB.height = textAnzeigeC.height = 100;

// Textformatierung
textFormat.align = TextFormatAlign.CENTER;
textFormat.bold = true;
textAnzeigeA.setTextFormat(textFormat);
textAnzeigeB.setTextFormat(textFormat);
textAnzeigeC.setTextFormat(textFormat);

// Button
var button:SimpleButton = new SimpleButton();
button.hitTestState = textAnzeigeA;
button.overState = textAnzeigeB;
button.downState = textAnzeigeC;
button.upState = textAnzeigeA;
addChild(button);
VorschauDownload

Um ein Bild (JPG-, PNG- oder GIF-Dateiformat) innerhalb einer AS3-Anwendung darzustellen, benötigen wir die Loader-Klasse. Über die Funktion load() kann das Bild geladen werden. Als Parameter wird der Pfad zu der Datei mittels eines URLRequest-Objekts (siehe Beispiel) angegeben. Im Beispiel wird ein Event registriert (Zeile 11), welches auslöst, wenn das Bild erfolgreich geladen wurde. In der Event-Funktion (imageLoaded()) wird dann das Bild skaliert und erst im Anschluss dem Anzeigeobjekt-Container hinzugefügt.

private var bildLader:Loader;

private function init(e:Event = null):void 
{
	removeEventListener(Event.ADDED_TO_STAGE, init);
	
	// Bild Ladevorgang starten
	bildLader = new Loader();
	bildLader.x = 300;
	bildLader.y = 200;
	bildLader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
	bildLader.load(new URLRequest("Bild-Test.jpg"));
}

private function imageLoaded(e:Event):void
{
	// Bild von 250x250px auf 200x200px skalieren
	bildLader.width = bildLader.height = 200;
	
	// Bild anzeigen
	addChild(bildLader);
}
VorschauDownload
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK