Dit is de tweede aflevering in onze Corona SDK fysica puzzel zelfstudie. In de tutorial van vandaag zullen we toevoegen aan onze interface en onze interactie met het spel. Lees verder!
Zorg ervoor dat u het eerste deel van de zelfstudie leest om deze tutorial volledig te begrijpen en voor te bereiden.
Deze functie voegt de nodige luisteraars toe aan de TitleView toetsen.
function startButtonListeners (action) if (action == 'add') then playBtn: addEventListener ('tap', showGameView) creditsBtn: addEventListener ('tap', showCredits) else playBtn: removeEventListener ('tap', showGameView) creditsBtn: removeEventListener ( 'tik', showCredits) einde
Het credits scherm wordt getoond wanneer de gebruiker op de wat betreft knop. EEN tik luisteraar is toegevoegd aan de weergave credits om deze te verwijderen.
functie showCredits: tik op (e) playBtn.isVisible = false creditsBtn.isVisible = false creditsView = display.newImage ('credits.png', -130, display.contentHeight-140) transition.to (creditsView, time = 300, x = 65, onComplete = function () creditsView: addEventListener ('tap', hideCredits) end) einde
Wanneer het creditsscherm wordt aangebroken, wordt het uit het werkgebied geschud en verwijderd.
functie hideCredits: tik op (e) playBtn.isVisible = true creditsBtn.isVisible = true transition.to (creditsView, time = 300, y = display.contentHeight + creditsView.height, onComplete = function () creditsView: removeEventListener ('tap' , hideCredits) display.remove (creditsView) creditsView = nil end) end
Wanneer de spelen knop is aangetikt, de titelweergave is getweend en verwijderd om de gameweergave te onthullen. Er zijn veel onderdelen betrokken bij deze weergave, dus we zullen ze in de volgende stap splitsen.
functie showGameView: tik op (e) transition.to (titleView, time = 300, x = -titleView.height, onComplete = function () startButtonListeners ('rmv') display.remove (titleView) titleView = nil end)
De volgende regels voegen het instructiesbericht toe. We zullen het gedurende twee seconden laten zien en het vervolgens laten vervagen.
-- Instructies Bericht local ins = display.newImage ('ins.png', 32, 182) transition.from (ins, time = 200, alpha = 0.1, onComplete = function () timer.performWithDelay (2000, function () transition. to (ins, time = 200, alpha = 0.1, onComplete = function () display.remove (ins) ins = nil end) end) end) lvlImg = display.newImage ('level.png', 202, 2 )
Met deze code wordt een rechthoek in de bodem van het werkgebied gemaakt om als vloer te gebruiken.
-- Floor local floor = display.newRect (0, 320, 480, 1)
Dit deel behandelt de levelcreatie. Het begint met het maken van de vakken in het werkgebied. We zullen meer over deze functie leren in de volgende paar stappen.
-- Niveaudozen addBox ('g', 60, 272) addBox ('s', 148, 284) addBox ('s', 148, 248) addBox ('s', 148, 212) addBox ('s', 148, 176) addBox ('n', 297, 272) addBox ('n', 297, 224) addBox ('n', 297, 176) addBox ('w', 148, 164)
Deze code voegt de bal toe aan het niveau.
-- Ball ball = display.newImage ('ball.png', 234, 138) ball.name = 'bal'
Hier voegen we fysica toe aan de vloer en de bal.
-- Fysica toevoegen physics.addBody (floor, 'static') physics.addBody (ball, 'dynamic', radius = 12) end
De volgende functie gebruikt drie parameters om een box-object te maken. U kunt het type vak opgeven in de eerste parameter en de positie ervan in de volgende twee. Met deze methode kunt u complexe niveaus maken met slechts een paar regels code. Het voegt fysica toe aan de nieuwe box, evenals een tik-luisteraar.
functie addBox (type, X, Y) local b = display.newImage (type ... 'Box.png', X, Y) physics.addBody (b, 'dynamic') if (type ~ = 'g') en dan b: addEventListener ('tap', removeBox) elseif (type == 'g') en vervolgens b: addEventListener ('botsing', onCollision) end-end
Met deze functie wordt het doelvak verwijderd wanneer erop wordt getikt.
functie removeBox (e) display.remove (e.target) einde
We gebruiken deze code om te zien of de bal in botsing komt met het doelvak en een melding te sturen als het waar is.
function onCollision (e) if (e.other.name == 'ball') then display.remove (ball) alert () end end
De waarschuwingsfunctie maakt een waarschuwingsweergave, animeert deze en beëindigt het spel.
functie alert (actie) gameListeners ('rmv') if (action == 'lose') then alertView = display.newImage ('lose.png', 110, 218) else alertView = display.newImage ('win.png', 110, 218) einde overgang. Vanaf (alertView, time = 200, alpha = 0.1) einde
Om het spel te starten, de Hoofd functie moet worden gebeld. We doen dat met de volgende code op zijn plaats.
Hoofd()
De Default.png bestand is een afbeelding die meteen wordt weergegeven wanneer u de toepassing start. Het wordt automatisch door de Corona-compiler toegevoegd wanneer u het aan uw projectbronmap toevoegt.
Met behulp van de afbeeldingen die u eerder hebt gemaakt, kunt u een leuk pictogram maken. De pictogramgrootte voor het niet-retina-iPhone-pictogram is 57x57px, maar de netvliesversie is 114x114px en de iTunes Store vereist een 512x512px versie. Ik stel voor het maken van de 512x512 versie eerst en schalen naar de andere maten.
Het hoeft geen afgeronde hoeken of een transparante schittering te hebben. iTunes en de iPhone zullen dat voor je doen.
Het is tijd om de laatste test te doen. Open de Corona Simulator, blader naar uw projectmap en klik op Openen. Als alles werkt zoals verwacht, bent u klaar voor de laatste stap!
Ga in de Corona Simulator naar Bestand> Build en selecteer uw doelapparaat. Vul de vereiste gegevens in en klik op bouwen. Wacht een paar seconden en uw app is gereed voor testen en indienen van apparaten voor distributie!
In deze serie leerden we over fysisch gedrag, tikluisteraars en botsingen. Dit zijn vaardigheden die echt nuttig kunnen zijn in een groot aantal spellen.
Experimenteer met het eindresultaat en probeer je eigen aangepaste versie van het spel te maken!
Ik hoop dat je deze serie leuk vond en vond het nuttig. Bedankt voor het lezen!