Grundlagen der BenutzerinteraktionFlash Player 9 und höher, Adobe AIR 1.0 und höher Ihre Anwendung kann den Benutzer einbeziehen, indem mit ActionScript 3.0 auf Benutzeraktionen reagiert wird. Beachten Sie, dass in diesem Abschnitt vorausgesetzt wird, dass Sie mit dem Ereignismodell von ActionScript 3.0 vertraut sind. Weitere Informationen finden Sie unter Verarbeiten von Ereignissen. Erfassen von BenutzereingabenDie Benutzerinteraktion per Tastatur, Maus, Kamera oder einer Kombination dieser Geräte ist die Grundlage von Interaktivität. In ActionScript 3.0 wird das Erkennen von und Reagieren auf Benutzerinteraktionen in erster Linie durch Warten auf Ereignisse realisiert. Die InteractiveObject-Klasse ist eine Unterklasse der DisplayObject-Klasse und stellt die allgemeine Ereignisstruktur und Funktionen bereit, die zum Verarbeiten von Benutzerinteraktionen erforderlich sind. Es ist nicht erforderlich, dass Sie direkt eine Instanz der InteractiveObject-Klasse erstellen. Stattdessen erben Anzeigeobjekte wie SimpleButton, Sprite, TextField und verschiedene Flash-Authoring-Tool- und Flex-Komponenten das entsprechende Benutzerinteraktionsmodell von dieser Klasse und weisen deshalb eine gemeinsame Struktur auf. Das bedeutet, dass die erlernten Techniken und der für von der InteractiveObject-Klasse abgeleitete Objekte programmierte Code zum Verarbeiten von Benutzerinteraktionen auch bei allen anderen Objekten anwendbar sind. Wichtige Konzepte und BegriffeEs ist wichtig, dass Sie sich mit den folgenden Kernbegriffen zur Benutzerinteraktion vertraut machen, bevor Sie fortfahren:
FokusverwaltungEin interaktives Objekt kann den Fokus entweder durch Programmcode oder durch eine Benutzeraktion erhalten. Wenn die tabEnabled-Eigenschaft auf true gesetzt wird, können Benutzer zudem durch Drücken der TAB-Taste den Fokus zwischen Objekten weitergeben. Beachten Sie, dass der Wert für tabEnabled standardmäßig false ist, außer in den folgenden Fällen:
In jedem dieser Fälle können Sie einen Listener für FocusEvent.FOCUS_IN oder FocusEvent.FOCUS_OUT hinzufügen, um zusätzliches Verhalten bei Fokusänderungen bereitzustellen. Dies ist besonders nützlich bei Textfeldern und Formularen, kann jedoch auch für Sprites, Movieclips oder andere Objekte eingesetzt werden, die von der InteractiveObject-Klasse erben. Im folgenden Beispiel ist dargestellt, wie Sie das zyklische Wechseln des Fokus über die TAB-Taste aktivieren und auf die daraufhin ausgelösten Fokusereignisse reagieren können. Im Beispiel ändert jedes der Rechtecke die Farbe, wenn es den Fokus erhält. Hinweis: In Flash Professional werden Tastaturbefehle für die Fokusverwaltung verwendet. SWF-Dateien sollten deshalb nicht in Flash, sondern in einem Browser oder in AIR getestet werden, um die Fokusverwaltung korrekt zu simulieren.
var rows:uint = 10;
var cols:uint = 10;
var rowSpacing:uint = 25;
var colSpacing:uint = 25;
var i:uint;
var j:uint;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
createSquare(j * colSpacing, i * rowSpacing, (i * cols) + j);
}
}
function createSquare(startX:Number, startY:Number, tabNumber:uint):void
{
var square:Sprite = new Sprite();
square.graphics.beginFill(0x000000);
square.graphics.drawRect(0, 0, colSpacing, rowSpacing);
square.graphics.endFill();
square.x = startX;
square.y = startY;
square.tabEnabled = true;
square.tabIndex = tabNumber;
square.addEventListener(FocusEvent.FOCUS_IN, changeColor);
addChild(square);
}
function changeColor(event:FocusEvent):void
{
event.target.transform.colorTransform = getRandomColor();
}
function getRandomColor():ColorTransform
{
// Generate random values for the red, green, and blue color channels.
var red:Number = (Math.random() * 512) - 255;
var green:Number = (Math.random() * 512) - 255;
var blue:Number = (Math.random() * 512) - 255;
// Create and return a ColorTransform object with the random colors.
return new ColorTransform(1, 1, 1, 1, red, green, blue, 0);
}
Erkennen von EingabetypenAb Flash Player 10.1 und Adobe AIR 2 besteht die Möglichkeit, die Laufzeitumgebung hinsichtlich der Unterstützung bestimmter Eingabetypen zu testen. Mit ActionScript können Sie testen, ob das Gerät, auf dem die Laufzeit derzeit implementiert ist, folgende Kriterien erfüllt:
Zu den ActionScript-APIs für die Eingabeerkennung gehören:
Über die APIs für die Eingabeerkennung können Sie die Fähigkeiten des Endgeräts nutzen oder Alternativen bereitstellen, wenn keine solchen Fähigkeiten vorhanden sind. Diese APIs sind besonders bei der Entwicklung von Anwendungen für mobile und berührungsempfindliche Geräte hilfreich. Wenn die Benutzeroberfläche für ein Mobilgerät beispielsweise kleine Schaltflächen für einen Stift aufweist, können Sie eine alternative Benutzeroberfläche mit größeren Schaltflächen bereitstellen, die für die Eingabe per Finger geeignet ist. Der folgende Code ist für eine Anwendung mit einer Funktion namens „createStylusUI()“ vorgesehen. Diese Funktion weist Benutzeroberflächenelemente für eine stiftgesteuerte Interaktion zu. Eine weitere Funktion namens „createTouchUI()“ weist andere Benutzeroberflächenelemente zu, die für die Interaktion per Finger vorgesehen sind: if(Capabilities.touchscreenType == TouchscreenType.STYLUS ){
//Construct the user interface using small buttons for a stylus
//and allow more screen space for other visual content
createStylusUI();
} else if(Capabilities.touchscreenType = TouchscreenType.FINGER){
//Construct the user interface using larger buttons
//to capture a larger point of contact with the device
createTouchUI();
}
Bei der Entwicklung von Anwendungen mit unterschiedlichen Eingabemechanismen sollten Sie die folgende Kompatibilitätsübersicht zurate ziehen:
Hinweis: Verschiedene Geräteplattformen können zahlreiche Kombinationen aus Eingabetypen unterstützen. Dieses Diagramm soll als allgemeine Übersicht dienen.
|
|