I denne Quick Tip lærer du hvordan du får musens nåværende retning i Flash-applikasjonen din ved hjelp av AS3. Du kan bruke dette til å skape en interessant kontrollmetode for et spill, for eksempel med en mus som en joystick. For nå vil vi bare vise retningen på skjermen.
Her er et raskt eksempel for å demonstrere hva vi jobber for:
Ved hjelp av en MouseEvent.MOUSE_MOVE-hendelse, overvåker vi bevegelsen av musemarkøren, lagrer dataene i variabler og viser sin nåværende retning.
Åpne Flash og opprett en ny Flash-fil (ActionScript 3).
Trykk Alternativ + F9, eller gå til Vindu> Handlinger for å åpne handlingspanelet.
Skriv inn variablene vi skal bruke; navnene deres er ganske selvforklarende:
var tidligereX: tall = 0; var tidligereY: tall = 0; var currentX: Number = 0; var nåværende: tall = 0; var xDir: String; var yDir: String; var dir: TextField = nytt TextField ();
Dette er hovedfunksjonen:
funksjon getMouseDirection (): void dir.width = stage.stageWidth; // Størrelsen på tekstfeltet addChild (dir); // Legger til tekstfeltet til scenen // Legger til musen flytte lytteren til scenen og utfører checkDirection-funksjonen når en musebevegelse skjer stage.addEventListener (MouseEvent.MOUSE_MOVE, checkDirection);
Denne koden kaller funksjonene som kontrollerer retningen og viser resultatet i scenen TextField.
funksjonskontrollDireksjon (e: MouseEvent): void getHorizontalDirection (); getVerticalDirection (); dir.text = "x:" + xDir + ", y:" + yDir;
Kontroller musens retninger.
// Horisontal funksjon getHorizontalDirection (): void previousX = currentX; // Kontrollerer siste posisjon currentX = stage.mouseX; // Gets gjeldende posisjon hvis (previousX> currentX) // Sammenligner begge posisjoner for å bestemme retningen xDir = "left"; annet hvis (forrigeX < 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) // Sammenligner begge posisjoner for å bestemme retningen yDir = "up"; annet hvis (forrige < currentY) yDir = "down"; else yDir = "none";
For å starte funksjonen, legg til denne linjen til koden. Når funksjonen getMouseDirection () er kjørt, vil den sette opp MOUSE_MOVE hendelseslytteren som driver retningsindikatoren.
getMouseDirection ();
pakke import flash.display.MovieClip; importer flash.text.TextField; importer flash.events.MouseEvent; offentlig klasse MouseMoveDemo utvider MovieClip public var previousX: Number = 0; offentlig var tidligereY: Tall = 0; offentlig var currentX: Number = 0; offentlig varighet nå: tall = 0; offentlig var xDir: String; offentlig var yDir: String; public var dir1: TextField = nytt TextField (); public var dir2: TextField = nytt TextField (); offentlig funksjon MouseMoveDemo () getMouseDirection (); offentlig funksjon getMouseDirection (): void dir1.width = stage.stageWidth; addChild (dir1); dir2.width = stage.stageWidth; dir2.y = 50; addChild (dir2); stage.addEventListener (MouseEvent.MOUSE_MOVE, checkDirection); offentlig funksjon checkDirection (e: MouseEvent): void getHorizontalDirection (); getVerticalDirection (); dir1.text = "x:" + xDir dir2.text = "y:" + yDir; offentlig funksjon getHorizontalDirection (): void previousX = currentX; currentX = stage.mouseX; if (previousX> currentX) xDir = "left"; annet hvis (forrigeX < currentX) xDir = "right"; else xDir = "none"; public function getVerticalDirection():void previousY = currentY; currentY = stage.mouseY; if (previousY > nåværende) yDir = "up"; annet hvis (forrige < currentY) yDir = "down"; else yDir = "none";
Velg denne fremgangsmåten hvis du foretrekker å bruke en dokumentklasse i stedet for tidslinjekoden. Les denne Quick Tip hvis du ikke er sikker på hva du skal gjøre med det.
Du kan bruke denne klassen til å legge inn en musens retningsindikator i et hvilket som helst prosjekt. Bare kopier hele klassen til en ny AS-fil, lagre den som "MouseMoveDemo.as", så kan du referere til den ved hjelp av følgende utdrag:
var mouseMoveDemo: MouseMoveDemo = ny MouseMoveDemo (); addChild (mouseMoveDemo);
Dette er et grunnleggende eksempel på hvordan du kan bruke en slik funksjon; prøv det, eksperimenter og bruk det i dine egne prosjekter!
Takk for at du leste.