Grunderna i användarinteraktionFlash Player 9 och senare, Adobe AIR 1.0 och senare Ditt program kan skapa interaktivitet via ActionScript 3.0 för att svara på användaråtgärder. Observera att du för det här avsnittet förutsätts ha grundläggande kunskaper om ActionScript 3.0-händelsemodellen. Mer information finns i Hantera händelser. Samla in indata från användarnaAnvändarinteraktion, oberoende av om det är via tangentbord, mus, kamera eller en kombination av alla tre, utgör själva grunden för all interaktivitet. I ActionScript 3.0 innebär att identifiera och besvara användarinteraktion huvudsakligen att avlyssna händelser. Klassen InteractiveObject, en underklass till klassen DisplayObject, ger en grundläggande struktur för händelser och funktioner som är nödvändiga för att hantera användarinteraktionen. Du skapar inte direkt en instans av klassen InteractiveObject. I stället ärver visningsobjekt som SimpleButton, Sprite, TextField och olika Flash-utvecklingsverktyg och Flex-komponenter sina respektive användarinteraktionsmodeller från den här klassen och de delar därför en gemensam struktur. Detta betyder att de tekniker som du lär dig och de koder som du skriver för att hantera användarinteraktionen i ett objekt, härlett från InteractiveObject, även går att använda för de övriga. Viktiga termer och begreppDet är viktigt att du känner till följande terminologi för användarinteraktion innan du fortsätter:
Hantera fokusEtt interaktivt objekt kan erhålla fokus antingen via programkoden eller genom en användarinteraktion. Om dessutom egenskapen tabEnabled är true, kan användaren flytta fokus från ett objekt till ett annat med tabbtangenten. Observera att värdet tabEnabled som standard är false förutom i följande fall:
I alla dessa situationer kan du lägga till en avlyssnare för FocusEvent.FOCUS_IN eller FocusEvent.FOCUS_OUT för att erhålla ytterligare beteenden när fokus ändras. Detta är speciellt användbart för textfält och formulär, men det kan också användas för spriter, filmklipp eller objekt som ärver från klassen InteractiveObject. I exemplet nedan visas hur du aktiverar fokusändringar med tabbtangenten och hur du svarar på den efterföljande fokushändelsen. I detta fall ändras färgen på varje ruta när den erhåller fokus. Obs! Eftersom kortkommandon används för att hantera fokus i Flash Professional bör du testa SWF-filer i en webbläsare eller AIR, och inte i Flash, för att få korrekt fokussimulering.
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); } Identifiera indatatyperI Flash Player 10.1 och Adobe AIR 2 introducerades en möjlighet att testa körningsmiljön för stöd av särskilda indatatyper. Du kan använda ActionScript om du vill testa ifall enheten på vilken körningen för närvarande finns:
ActionScript API:er för identifiering av indatatyper omfattar:
Genom API:erna för identifiering av indata kan du dra nytta av användarens enhetsfunktioner, eller tillhandahålla alternativ om användaren saknar de aktuella funktionerna. Dessa API:er är särskilt användbara vid utveckling av mobila program och program med pekfunktioner. Om du till exempel använder ett gränssnitt för en mobil enhet med små knappar som är avsedda för en styluspenna kan du tillhandahålla ett alternativt gränssnitt med större knappar för användare som använder pekfunktioner med fingret. Följande kod är för ett program med funktionen createStylusUI(), som tilldelar en uppsättning användargränssnittselement som passar för styluspennor. En annan funktion, kallad createTouchUI(), tilldelar en annan uppsättning användargränssnittselement som passar för pekfunktioner som utförs med fingrarna: 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(); } Tänk på följande kompatibilitetstabell när du utvecklar program för miljöer med olika indatatyper:
Obs! Olika enhetsplattformar kan ha stöd för flera olika kombinationer av indatatyper. Se den här tabellen som en allmän vägledning.
|
|