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.
Här är ett snabbt exempel för att visa vad vi arbetar mot:
Med en MouseEvent.MOUSE_MOVE-händelse kommer vi att övervaka muspekarens rörelse, lagra data i variabler och visa dess nuvarande riktning.
Öppna Flash och skapa en ny Flash-fil (ActionScript 3).
Tryck på Alternativ + F9, eller gå till Fönster> Åtgärder för att öppna åtkomstpanelen.
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 ();
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);
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;
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";
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 ();
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);
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.