Hurtig Tips Slik oppdager du musens retning ved hjelp av ActionScript

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.


Forhåndsvisning

Her er et raskt eksempel for å demonstrere hva vi jobber for:


Kort overblikk

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.


Trinn 1: Opprett en ny fil

Åpne Flash og opprett en ny Flash-fil (ActionScript 3).


Trinn 2: Åpne handlinger Panel

Trykk Alternativ + F9, eller gå til Vindu> Handlinger for å åpne handlingspanelet.


Trinn 3: Variabler

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 ();

Trinn 4: Hovedfunksjon

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); 

Trinn 5: Kontroller retning

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; 

Trinn 6: Få veibeskrivelse

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";  

Trinn 7: Kjører funksjonen

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 ();

Trinn 8: Dokumentklasseversjon

 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);

Konklusjon

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.