Objektsteuerung per Tastatur
Flash bietet viele Möglichkeiten zur Interaktion mit dem Benutzer. Die meisten Interaktionen mit dem Anwender werden durch die Bedienung der Mouse ausgeführt. Gerade in Flash-Spielen jedoch laufen viele Interaktionen über die Tastatur ab. Wenn es darum geht, einen virtuellen Spieler, ein Auto oder ein anderes Objekt zu steuern, erhalten die Pfeiltasten meist den Vorzug vor der Mouse. Auf diese Objektsteuerung per Tastatur wollen wir im folgenden Artikel eingehen.
Zu aller erst benötigen wir natürlich ein Objekt. Da es uns nur um die Steuerung geht, reicht uns ein sehr simples Gebilde. Zeichnen Sie in einem neuen Dokument einen Kreis ein. Wandeln Sie den Kreis mit Hilfe der Funktionstaste F8 in ein MovieClip-Symbol um. Markieren Sie anschließend die Instanz des Objekts und rufen Sie das Aktionen-Fenster auf. Damit sich der Kreis über den Bildschirm bewegt, benötigen wir natürlich ein paar ActionScript-Anweisungen:
Beim Laden der MovieClip-Instanz initialisieren wir eine Variable “offset” mit dem Wert 5. Da wir später auf den Wert der Variable von der Hauptzeitleiste direkt zugreifen wollen, legen wir mit „_root“ die Variable direkt auf der Hauptzeitleiste ab.
Der Wert der Variable „offset“ entspricht später der Intensität der Objektverschiebung in Pixeln. Ein höherer Wert hätte somit eine stärkere Verschiebung zur Folge. Nun wollen wir aber auch für die Verschiebung des Objektes sorgen:
Sobald eine Taste gedrückt wird, interessieren wir uns dafür, um welche Taste es sich handelt. Mit „Key.isDown(37)” überprüfen wir, ob die Taste mit dem ASCII-Tastencodewert 37 gedrückt wurde. Der Tastencodewert 37 entspricht der linken Pfeiltaste. Wenn die Taste gedrückt wird, liefert die Anweisung „true“. Die Bedingung der If-Struktur ist somit erfüllt und der Befehl innerhalb der Blockklammern wird ausgeführt. Dabei verringern wir die X-Koordinate des Objektes um den Wert der Variable „offset“. Das Objekt bewegt sich somit um 5 Pixel nach links. Die Objektverschiebung nach oben, unten und nach rechts sollte Ihnen nun keine Probleme mehr bereiten:
Wie Sie sehen, ist der ASCII-Code für die restlichen Pfeiltasten fortlaufend. Natürlich besitzen auch die anderen Tasten eine entsprechende Kodierung. Die Buchstabentaste A hat den ASCII-Code 65, B entsprechend 66. Die Taste Z hat demzufolge den Tastencode 90. Die Zifferntasten 0 bis 9 liegen zwischen den Werten 48 bis 57. Die Funktionstasten F1 bis F15 haben eine ASCII-Kodierung zwischen 112 und 126. Die Ziffern auf dem Nummernblock besitzen eine eigene Kodierung zwischen 96 und 105. Leider lassen sich die restlichen Kodierungen für Sonderzeichen und besondere Funktionstasten nicht so einfach herleiten. Daher steht für Sie eine vollständige Auflistung aller ASCII-Tastencodes im Anschluss an diesen Artikel zum Herunterladen bereit.
Wir wollen unsere Anwendung mit einer weiteren Funktion ausstatten. Wie Sie bereits wissen, bestimmt die Variable „offset“ die Intensität der Verschiebung in Pixeln. Mit der Plus- und Minus-Taste wollen wir den Wert von „offset“ beeinflussen:
Also ist es egal, ob der Benutzer die Plus- bzw. Minus-Taste auf dem Nummernblock benutzt oder auf die andere Kodierung der Zeichen zurückgreift. Wir begrenzen den Wert von „offset“ nach oben durch 10. Eine größere Intensität wollen wir nicht zulassen. Wiederum ist ein Wert von Null unsinnig, da er keine Verschiebung des Objektes zur Folge hat. Ein negativer Wert würde sogar die Richtung umkehren und den Anwender verwirren.
ASCII-Tastencodes [Objektsteuerung_per_Tastatur1.zip]
Beispiel: Objektsteuerung [Objektsteuerung_per_Tastatur2.zip]
Zu aller erst benötigen wir natürlich ein Objekt. Da es uns nur um die Steuerung geht, reicht uns ein sehr simples Gebilde. Zeichnen Sie in einem neuen Dokument einen Kreis ein. Wandeln Sie den Kreis mit Hilfe der Funktionstaste F8 in ein MovieClip-Symbol um. Markieren Sie anschließend die Instanz des Objekts und rufen Sie das Aktionen-Fenster auf. Damit sich der Kreis über den Bildschirm bewegt, benötigen wir natürlich ein paar ActionScript-Anweisungen:
001:002:003:
onClipEvent(load) { _root.offset = 5; }
Beim Laden der MovieClip-Instanz initialisieren wir eine Variable “offset” mit dem Wert 5. Da wir später auf den Wert der Variable von der Hauptzeitleiste direkt zugreifen wollen, legen wir mit „_root“ die Variable direkt auf der Hauptzeitleiste ab.
Der Wert der Variable „offset“ entspricht später der Intensität der Objektverschiebung in Pixeln. Ein höherer Wert hätte somit eine stärkere Verschiebung zur Folge. Nun wollen wir aber auch für die Verschiebung des Objektes sorgen:
001:002:003:004:005:
onClipEvent(keyDown) { // nach links if (Key.isDown(37)) { this._x -= _root.offset; }
Sobald eine Taste gedrückt wird, interessieren wir uns dafür, um welche Taste es sich handelt. Mit „Key.isDown(37)” überprüfen wir, ob die Taste mit dem ASCII-Tastencodewert 37 gedrückt wurde. Der Tastencodewert 37 entspricht der linken Pfeiltaste. Wenn die Taste gedrückt wird, liefert die Anweisung „true“. Die Bedingung der If-Struktur ist somit erfüllt und der Befehl innerhalb der Blockklammern wird ausgeführt. Dabei verringern wir die X-Koordinate des Objektes um den Wert der Variable „offset“. Das Objekt bewegt sich somit um 5 Pixel nach links. Die Objektverschiebung nach oben, unten und nach rechts sollte Ihnen nun keine Probleme mehr bereiten:
001:002:003:004:005:006:007:008:009:010:011:012:013:014:015:
// nach oben if (Key.isDown(38)) { this._y -= _root.offset; } // nach rechts if (Key.isDown(39)) { ._x += _root.offset; } // nach unten if (Key.isDown(40)) { this._y += _root.offset; } }
Wie Sie sehen, ist der ASCII-Code für die restlichen Pfeiltasten fortlaufend. Natürlich besitzen auch die anderen Tasten eine entsprechende Kodierung. Die Buchstabentaste A hat den ASCII-Code 65, B entsprechend 66. Die Taste Z hat demzufolge den Tastencode 90. Die Zifferntasten 0 bis 9 liegen zwischen den Werten 48 bis 57. Die Funktionstasten F1 bis F15 haben eine ASCII-Kodierung zwischen 112 und 126. Die Ziffern auf dem Nummernblock besitzen eine eigene Kodierung zwischen 96 und 105. Leider lassen sich die restlichen Kodierungen für Sonderzeichen und besondere Funktionstasten nicht so einfach herleiten. Daher steht für Sie eine vollständige Auflistung aller ASCII-Tastencodes im Anschluss an diesen Artikel zum Herunterladen bereit.
Wir wollen unsere Anwendung mit einer weiteren Funktion ausstatten. Wie Sie bereits wissen, bestimmt die Variable „offset“ die Intensität der Verschiebung in Pixeln. Mit der Plus- und Minus-Taste wollen wir den Wert von „offset“ beeinflussen:
001:002:003:004:005:006:007:008:009:
// Geschwindigkeit erhöhen if (Key.isDown(187) || Key.isDown(107)) { _root.offset = (_root.offset < 10) ? _root.offset + 1 : 10; } // Geschwindigkeit verringern if (Key.isDown(189) || Key.isDown(109)) { _root.offset = (_root.offset > 1) ? _root.offset - 1 : 1; }
Also ist es egal, ob der Benutzer die Plus- bzw. Minus-Taste auf dem Nummernblock benutzt oder auf die andere Kodierung der Zeichen zurückgreift. Wir begrenzen den Wert von „offset“ nach oben durch 10. Eine größere Intensität wollen wir nicht zulassen. Wiederum ist ein Wert von Null unsinnig, da er keine Verschiebung des Objektes zur Folge hat. Ein negativer Wert würde sogar die Richtung umkehren und den Anwender verwirren.
ASCII-Tastencodes [Objektsteuerung_per_Tastatur1.zip]
Beispiel: Objektsteuerung [Objektsteuerung_per_Tastatur2.zip]