Snabbtips Så här upptäcker du musriktning med ActionScript

I den här Snabbtipset lär du dig hur du får musens aktuella riktning i din Flash-applikation med AS3. Du kan använda detta för att skapa en intressant kontrollmetod för ett spel, t.ex. med en mus som en joystick. För nu visar vi bara riktningen på skärmen.


Förhandsvisning

Här är ett snabbt exempel för att visa vad vi arbetar mot:


Kort överblick

Med en MouseEvent.MOUSE_MOVE-händelse kommer vi att övervaka muspekarens rörelse, lagra data i variabler och visa dess nuvarande riktning.


Steg 1: Skapa en ny fil

Öppna Flash och skapa en ny Flash-fil (ActionScript 3).


Steg 2: Öppna åtgärdspanelen

Tryck på Alternativ + F9, eller gå till Fönster> Åtgärder för att öppna åtkomstpanelen.


Steg 3: Variabler

Ange de variabler vi ska använda; deras namn är ganska självförklarande:

var tidigareX: Nummer = 0; var tidigareY: Nummer = 0; var currentX: Number = 0; var nuvarande: Nummer = 0; var xDir: String; var yDir: String; var dir: TextField = nytt TextField ();

Steg 4: Huvudfunktion

Detta är huvudfunktionen:

 funktion getMouseDirection (): void dir.width = stage.stageWidth; // Storlek på textfältet addChild (dir); // Lägger till textfältet på scenen // Lägger muspekaren till scenen och kör checkDirection-funktionen när en musrörelse uppträder stage.addEventListener (MouseEvent.MOUSE_MOVE, checkDirection); 

Steg 5: Kontrollera riktningen

Denna kod kallar de funktioner som kontrollerar riktningen och visar resultatet i scenen TextField.

 funktionskontrollDirection (e: MouseEvent): void getHorizontalDirection (); getVerticalDirection (); dir.text = "x:" + xDir + ", y:" + yDir; 

Steg 6: Få vägbeskrivningar

Kontrollera musens riktningar.

 // Horisontell funktion getHorizontalDirection (): void previousX = currentX; // Kontrollerar det sista läget currentX = stage.mouseX; // Hämtar nuvarande position om (previousX> currentX) // Jämför båda positionerna för att bestämma riktningen xDir = "left";  annars om (tidigareX < currentX)  xDir = "right";  else  xDir = "none";   //Vertical function getVerticalDirection():void  previousY = currentY; //Checks the last position currentY = stage.mouseY; //Gets the current position if (previousY > currentY) // Jämför båda positionerna för att bestämma riktningen yDir = "up";  annars om (tidigare < currentY)  yDir = "down";  else  yDir = "none";  

Steg 7: Kör funktionen

För att starta funktionen, lägg till den här raden i koden. När funktionen getMouseDirection () har körts, ställer den upp MOUSE_MOVE-händelysaren som driver riktningsindikatorn.

getMouseDirection ();

Steg 8: Dokumentklassversion

 paket import flash.display.MovieClip; importera flash.text.TextField; importera flash.events.MouseEvent; public class MouseMoveDemo utökar MovieClip public var previousX: Number = 0; offentlig var tidigareY: Nummer = 0; allmän var currentX: Number = 0; offentliga var nuvarande: Nummer = 0; public var xDir: String; offentlig var yDir: String; public var dir1: TextField = ny TextField (); public var dir2: TextField = nytt TextField (); allmän funktion MouseMoveDemo () getMouseDirection ();  allmän funktion getMouseDirection (): void dir1.width = stage.stageWidth; addChild (dir1); dir2.width = stage.stageWidth; dir2.y = 50; addChild (kat2); stage.addEventListener (MouseEvent.MOUSE_MOVE, checkDirection);  allmän funktion checkDirection (e: MouseEvent): void getHorizontalDirection (); getVerticalDirection (); dir1.text = "x:" + xDir dir2.text = "y:" + yDir;  offentlig funktion getHorizontalDirection (): void previousX = currentX; currentX = stage.mouseX; om (tidigareX> currentX) xDir = "left";  annars om (tidigareX < currentX)  xDir = "right";  else  xDir = "none";   public function getVerticalDirection():void  previousY = currentY; currentY = stage.mouseY; if (previousY > currentY) yDir = "up";  annars om (tidigare < currentY)  yDir = "down";  else  yDir = "none";    

Välj detta tillvägagångssätt om du föredrar att använda en dokumentklass snarare än tidslinjekod. Läs den här snabba tipsen om du inte är säker på vad du ska göra med det.

Du kan använda den här klassen för att bädda in en musriktningsindikator inom något projekt. Kopiera hela klassen till en ny AS-fil, spara den som "MouseMoveDemo.as", då kan du referera till det med följande kod:

 var mouseMoveDemo: MouseMoveDemo = ny MouseMoveDemo (); addChild (mouseMoveDemo);

Slutsats

Detta är ett grundläggande exempel på hur du kan använda en sådan funktion; prova, experimentera och använda det i dina egna projekt!

Tack för att du läser.