I denna Snabba Tips skapar vi en anpassad crosshair tillsammans med ett skottljud. Detta kan vara grunden för ett shoot-up-spel. I det här exemplet placerar vi kulhål på scenen vid den punkt där du klickar.
I SWF ser du en Start-knapp. När du klickar på den här knappen blir musen en crosshair redo att göra skada. När du klickar på scenen spelar ett skottljud och en kulhåls grafik läggs till scenen vid den punkt där du klickade med musen.
Öppna ett nytt Flash-dokument och ställ in följande egenskaper
För startknappen ritade jag en rundad rektangel och lade lite text med ordet Starta på den. Jag konverterade sedan knappen och texten till en MovieClip genom att rita ett val runt dem och tryckte på F8. Jag gav knappen namnet starta spelet
, och används också starta spelet
som Instansnamn i Egenskaper-panelen. Om Egenskaper-panelen inte visas för dig, gå till Meny-> Fönster-> Egenskaper eller tryck bara på CTRL + F3.
Inne i övningsfilerna finns två bilder: den ena är crosshair-grafiken, och den andra är bullethole-grafiken. Jag importerade dessa i taget till scenen och konverterade dem till en MovieClip genom att klicka på dem och tryckte på F8. Jag gav dem förekomstnamnen "BulletHole" och "CrossHair", såg till att registreringspoängen sattes till mitten i båda fallen och använde samma namn för klassen i länken för varje symbol. Nedan följer en bild av hur jag ställer in BulletHole; det är detsamma för CrossHair.
För ljudet importerade jag det till biblioteket och högerklickade det och valda egenskaper. Sedan gav jag det namnet GunShot och satte Linkage Class som GunShot också.
Nu när vi har alla våra spelelement klar kan vi dyka in i koden.
Här ställer vi upp vårt paket och Main Class för vårt spel
Först importerar vi några klasser vi behöver, då ställer vi upp vår dokumentklass. Denna huvudklass måste sträcka antingen MovieClip eller Sprite; här förlänger vi MovieClip. Vi förklarar sedan några variabler vi ska använda, och kodar vår konstruktörfunktion. Konstruktörsfunktionen lägger till en händelselysare till knappen, där vi ställer in resten av spelet.
paket import flash.display.MovieClip; importera flash.events.MouseEvent; importera flash.ui.Mouse; importera flash.media.Sound; importera flash.media.SoundChannel; public class Main utökar MovieClip // Filmklipp och ljud i biblioteket var crosshair: CrossHair = new CrossHair (); var bullethole: BulletHole; var skott: GunShot = ny GunShot (); // Behovet för skottljudet var soundChannel: SoundChannel = new SoundChannel; // Huruvida användaren har klickat 1 gång var firstShot = true; allmän funktion Main () // Visa handpekaren när användaren muspekar över knappen startGame.buttonMode = true; startGame.addEventListener (MouseEvent.CLICK, startTheGame);
starta spelet()
FungeraDe starta spelet()
funktion kallas när användaren klickar på knappen. Den här funktionen tar bort knappen från scenen, gömmer musen och lägger crosshairen till scenen. Vi lägger sedan till två Event Listeners till scenen.
privat funktion startTheGame (e: MouseEvent): void // Ta bort knappen från scenen removeChild (startGame); // Håll musen Mouse.hide (); // Lägger crosshairen och sätter dess x och y egenskaper // till musens x- och y-koordinater addChild (crosshair); crosshair.x = mouseX; crosshair.y = mouseY; stage.addEventListener (MouseEvent.MOUSE_MOVE, moveCursor); stage.addEventListener (MouseEvent.CLICK, Fireshot);
moveCursor ()
och Fireshot ()
De moveCursor ()
funktion kallas när användaren flyttar musen, på grund av MOUSE_MOVE-händelseläsenaren lade vi till scenen. I den här funktionen kontrollerar vi helt enkelt att crosshairen är i samma position som musen med hjälp av mouseX
och MUSGRÅ
.
privat funktion moveCursor (e: MouseEvent): void // Se till att crosshairen x och y är alltid // där musens x och y är crosshair.x = mouseX; crosshair.y = mouseY;
De Fireshot ()
funktion kallas när användaren klickar på scenen. Vi kontrollerar först för att se om det här är första gången användaren klickade; Om det inte är så spelar vi skottljudet och lägger till bulletHole i samma position på scenen där användaren klickade på med hjälp av e.stageX
oche.stageY
. Händelsen innehåller information om sig själv - du kan se vad den innehåller genom att använda trace (e.toString ())
.
Om vi inte kollade om det här var första gången, då användaren först klickade på Start-knappen skulle det lägga till en crosshair och spela skottljudet (vi vill inte ha det).
privat funktion fireShot (e: MouseEvent): void // Om de har klickat en gång så gör vi detta om (firstShot == false) // Spelar ljudet soundChannel = gunshot.play (); // Skapar en ny bullethole och lägger till den i // scenen på den plats där användaren klickade bullethole = new BulletHole (); addChild (bullet); bullethole.x = e.stageX; bullethole.y = e.stageY; // Vi vill alltid ha crosshairen på toppen så vi byter "Djuparna" // av crosshairen och bullet swapChildren (bullethole, crosshair); firstShot = false; // Stäng klassen // Stäng paketet
Det kan vara grunden för många shoot-up-spel-spel. Det skulle vara väldigt enkelt att koka några fiender och sedan göra en hitTestPoint () -kontroll med musens X och Y mot fiendens visningsobjekt.
Jag hoppas att du har haft denna handledning. Tack för att du läser!