3. In de in een spel: mikken en schieten

maken, 3. Het spel: richten en schieten,,,,,,,,,, delen, deel 2,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen, Hé, Flash ontwikkelaar.In deze serie, zullen we door de ontwikkeling van een zeer fundamentele verdediging van het proces van de ontwikkeling van het spel.In het eerste deel van de serie, leren we hoe we op het gebied van de toren op het spel zetten voor hun doel, de capaciteit (in dit geval, laat ze het vuur van de muis).,,, en dat het uiteindelijke resultaat bekijken, zodra we klaar zijn met deze les. We moeten dat:,, klik op een ring van de installatie op de toren.Attentie alle toren die hen wijzen op de muis cursor.Klik, en alle aangebracht op de toren brand voor de cursor deeltjes, stap 1: een. Wat is het spel?Wikipedia definitie geeft een goed overzicht van het: "toren verdediging spel" is het doel om te voorkomen dat de vijand in de kaart, door de bouw van een toren, die in hun overdracht eigenlijk is, zullen we de ontwikkeling in deze serie.Weet je nog, die we in de toren van deze handleiding toren, de vloek van de schat is een TD. Een goed voorbeeld van, als je het nog niet zeker.,, stap 2: installatie van ide, voordat we beginnen met de ontwikkeling van het spel, en we moeten de projecten die voor onze ide.Ik zal met FlashDevelop hier.Als je wilt lezen over hoe het project de ontwikkeling van een flash, zie de stappen 1 en 2 van deze handleiding, of deze handleiding, dus nu FlashDevelop. Je moet er een eerste klasse, met de volgende code:,, pakket (invoer flash.display.sprite; in de loop van de eerste uitbreiding van de belangrijkste openbare functie Sprite {(de):{}}} ongeldig, stap 3: te weten de elementen voor het spel, een deel van onze wedstrijd zal de volgende elementen op het spel:,, met alle elementen op het gebied van spel spelen: zal worden geplaatst, die reserve: dit is een spel op het veld, gedefinieerd als de houder is van een toren, de toren op het spel: we kunnen worden geplaatst in de toren in reserve wapen, kogels. En, tot slot, toren fir deeltjesAlle bovengenoemde elementen, bijvoorbeeld in de toren zijn, met uitzondering van Main.as creëren, dit is een onafhankelijke, torens, klas, laat nu de code!Stap 4:,, het creëren van vervangende, we beginnen met het creëren van een functie, createturretplaceholder (). Dit zal een reserve te creëren en terug te keren naar de elfen.Toevoeging van de volgende, belangrijke, klasse - functie:, createturretplaceholder (): Sprite Sprite = {VAR reserve: nieuwe Sprite (); ///////grafische variabelen g: grafische = placeholder.graphics; g.beginfill (0xce7822); g.drawcircle (0, 0, 20); G. Endfill (); de Vervanging van deze terugkeer;}, de functie is het creëren van een, SPRITE, variabele reserve.Het gebruik van API - en behandelingen waardoor we grafische gecreëerd, dit is een simpele cirkel.Tot slot, het terug naar de elfen,,, stap 5: toevoeging van de reserve, nu zullen we het creëren van drie bijvoorbeeld gebruik te maken van de vorige functie in de plaats van de verschillende posities.De toevoeging van de volgende code, Main (), de fabrikant: var placeholder1: Sprite = createturretplaceholder (); in deze verklaring, creëren we een variabele, placeholder1, type, SPRITE, het ontvangen van een reserve van boven, createturretplaceholder (), de functie, het placeholder1. X = 200; placeholder1. Y = 60,, we zijn in positie op het gebied van de reserve, addchild (placeholder1);, en dan voegen we een vervanging voor de fase van dezelfde code gebruiken, zullen we nog twee reserve gebied - dus je) (), functionele eruit moet zien: de openbare functies, Main () {VAR placeholder1 Sprite = createturretplaceholder ():; placeholder1. X = 200; placeholder1. Y = 60; var placeholder2: Sprite = createturretplaceholder (x); placeholder2.= 60; placeholder2. Y = 260; var placeholder3: Sprite = createturretplaceholder (); placeholder3. X = 350; placeholder3. Y = 260; addchild (placeholder1); addchild (placeholder2); addchild (placeholder3);}, stap 6: toren creëren, zoals ik al eerder heb gezegd, de toren dat is een aparte categorie.Dit is nodig omdat die hun specifieke eigenschappen en de methode van de uitbreiding, en zal in de toekomst, voor het creëren van verschillende soorten van de toren.Dat maakt ze in een aparte categorie in de definitie van een perfecte kandidaat, voort te zetten en het creëren van een nieuwe klasse van de toren, genaamd, uit elf, in naam van de documenten, de toren.Het moet de volgende code: invoer, pakje {flash.display.sprite; de uitbreiding van de toren Sprite {{}}} turret (openbare functie), 7: de grafiek, stap een, we hebben nu de toren, klasse, de infrastructuur, de volgende stap is naar de toren een patroon.Als we het creëren van een nieuwe functie, trekken (), klas.Dus heeft de volgende functies: b) aan de fabrikant: private functie (ongeldig {VAR G: grafische = this.graphics; g.beginfill (0xd7d700); g.drawcircle (0, 0, 20); g.beginfill (0x800000); g.drawrect (0, 5, 25, 10); G. Endfill ();}, kan je In de in de code gevonden, we een cirkel tekenen en een rechthoek.Dit is onze toren om te zien.Nu noemen we deze functie door de fabrikant zelf, de openbare functie () () {b turret;}, salaristrap 8: het creëren van een geest toren, wat we moeten doen is het tweede ding dat als we die geest toren, we spelen op het gebied van de reserve.Wat is een wapen?Nou, het is gewoon een transparant als vervanging in die toren die muis, dat de speler een toren kan worden ingezet waar, in de eerste plaats moeten we een geest toren.Verklaard een variabele, die in de heer, klasse, particuliere var ghost_turret: toren; scheppen nu, Main (), een nieuwe toren, de fabrikant: ghost_turret = nieuwe turret (); voor de geest toren, bepaalde eigenschappen, zodat het eruit ziet als een spook, ghost_turret.alpha = 0,5; ghost_turret.mouseenabled = vals; ghost_turret.visible = valse;, in dit deel van de code in de helft van de vermindering van de ondoorzichtige onze toren (0,5) en de vaststelling van de toren, mouseenabled, eigendom, die valse, zodat de geesten niet ontvangen van een muis.Waarom?We zullen zien.Als de geest toren van immateriële standaard, verstoppen we het tot slot, zet de toren geeft de lijst:, addchild (ghost_turret); de fabrikant moet, u, heer, ziet er als volgt uit: openbare functies, Main () {VAR placeholder1: Sprite = createturretplaceholder (); placeholder1. X = 200; placeholder1. Y = 60; var placeholder2: Sprite = createturretplaceholder (); placeholder2. X = 60; placeholder2. Y = 260; var placeholder3: Sprite = createturretplaceholder (); placeholder3. X = 350; placeholder3. Y = 260; addchild (placeholder1); addchild (placeholder2); addchild (placeholder3); ghost_turret = nieuwe turret (); ghost_turret.alpha = 0,5; ghost_turret.mouseenabled = vals; ghost_turret.visible = vals; addchIld (ghost_turret);}, als je nu de film (CTRL), alles wat je ziet is een vervanging van drie op het podium.Saai?Laten we nog een interactieve.,, stap 9: vertoning van geest toren, we hopen dat de geest die muis in de toren, geen vervanging.Laten we de muis in het publiek, createturretplaceholder () elke vervanging in het terug, functie, een reserve van privé - functie, variabelen, createturretplaceholder (): Sprite Sprite = {VAR reserve: nieuwe Sprite (); ///////grafische variabelen g: grafische = placeholder.graphics; g.beginfill (0xce7822); g.drawcircle (0, 0, 20); G. Endfill (); vervanging. AddEventListener (mouseevent.mouse_over, showghostturret, valse, 0, waar); vervanging. AddEventListener (mouseevent.mouse_out, hideghostturret, valse, 0, waar); naar de reserve;}, de code is zeer publiek, mouse_over, mouse_out, gebeurtenissen, en Nu hebben we de definitie van de functie van de procedures.Toevoeging van de volgende twee functies createturretplaceholder (). Functie: privé - functie, showghostturret (E:MouseEvent = nul) {VAR target_placeholder: invaliditeit: Sprite = e.currenttarget elfen; ghost_turret. X = target_placeholder. X; ghost_turret. Y = target_placeholder. Y; ghost_turret.visible = waar;} privé functie hideghostturret (E:MouseEvent = lege): ongeldig {ghost_turret.visible = vals;}, hideghostturret (), maar verborgen toren maar wat de Wraith, showghostturret functioneren?Laten we kijken, var. Target_placeholder: Sprite = e.currenttarget elfen;, verwijzen wij naar een vervanging voor de muis is het gebruik van, de gebeurtenissen, currentTarget, eigendom, typecasted, SPRITE, ghost_turret. X = target_placeholder. X; ghost_turret. Y = target_placeholder. Y; ghost_turret.visible = waar;, het is alleen... Onze positie de geest van de coördinaten die reserve, zodat het zichtbaar is.De film die je moet zien, geest toren verscheen in de reserve.Heel goed.10: de invoering van maatregelen, en de toren, we de volgende stap is de invoering van een toren, klik op de reserve.Want we hebben een klik, in de reserve te luisteren.Maar tot dan, we moeten een variabele, installatie, zullen al onze toren, dus wij kunnen leren van hun, op elk moment.De mensen in de heer, klasse, privé - var - toren: - = [...]; dat zou dan een ander publiek is lager dan in de twee eerdere luisteraars zeggen we, createturretplaceholder (). Functie:, bijvoorbeeld. AddEventListener (mouseevent.mouse_over, showghostturret, valse, 0, waar); vervanging. AddEventListener (mouseevent.mouse_out, hideghostturret, valse, 0, waar); vervanging. AddEventListener (mouseevent.click, addturret, valse, 0, waar); dat, addturret (), de behandeling van functies, hideghostturret (). Functie: privé - functie, addturret (E:MouseEvent {}): ongeldig, laten we de code te schrijven.Voeg de volgende code, addturret (), de functie, het reactieve target_placeholder: Sprite = e.currenttarget elfen;, functie, moeten wij in de eerste plaats op de reserve, zoals we deden, showghostturret (referentie), var toren: toren = nieuwe turret ();, creëren we een naam voor een nieuwe. De toren van de toren, toren. X = target_placeholder. X; de toren. Y = target_placeholder. Y;, de volgende, we zijn in positie, torens, in target_placeholder, coördineren, addchild (toren); de toren. Duw (toren); als de toren is gecreëerd, zullen we het toevoegen aan de fase naar De generator. Je addturret, functie, eruit moet zien: private - functie, addturret (E:MouseEvent): ongeldig {VAR target_placeholder: Sprite =E.currenttarget elfen; var = nieuwe turret () een toren, toren. X = target_placeholder. X; de toren. Y = target_placeholder. Y; addchild (toren); de toren. Duw (toren);}, hier moeten wij aandacht schenken aan één ding.Weet je nog die we mouseenabled, eigendom, de geest die de valse?Als we niet in de toren, de geest en de muis gevangen tussen de reserve zal de klikt, om te voorkomen dat de gebeurtenissen in de reserve.Als gevolg van een klik met de vervanging van het publiek niet worden ingeroepen, wil je misschien uit de reserve te schrappen, en luisteren.Ik heb hier een klik van de nieuwe toren blokkeren, maar als je met een ander ontwerp van de toren, dit is een goed idee, dat we nodig hebben om onze toren.Probeer weg te rennen van de film, moet je in de reserve inzet kan toren, torens, stap 11: productie van mobiele, in deze handleiding zullen we de toren rotatie van het gezicht van de muis.We blijven in een aparte categorie van de methode van de toren, en draaien.Deze methode wordt genoemd, update (),., laten we aan deze methode, die, nu de openbare functie Update ():void {VAR hoek: de hoeveelheid = wiskunde (stage.mousey. Maar dit. Y, stage.mousex - X) /math.pi * 180; this.rotation = hoek;}, alles wat we gedaan hebben, In deze functie is die vanuit het oogpunt van de berekening van de muis en vanuit het oogpunt van de toren.Als je niet weet hoe het werkt. Ga op een flash ontwikkelaars Delta), maar dat we geen uit alle delen van de functie, dus is er niets gebeurd.Deze functie zal worden genoemd onder de definitie van recycling van ons spel.Laten we gaan!12 - stappen: het spel, verkeer, wat de lus?Is het de taak van de aanvullende enter_frame, gebeurtenissen, ook bekend als elk frame.Bijwerking van alle elementen in het spel... In ons geval, toren.In dit verslag voor meer details, het creëren van een functie, gameloop (), wordt de volgende, Main (), de fabrikant wordt een publiek, enter_frame, film gebeurtenissen: private functie, gameloop (E: gebeurtenissen: {}) nietig, nu hebben we een definitie van de functies van de luisteraar, moeten wij aandacht besteden aan de het desbetreffende geval.Dat doen we, Main (), de aannemer.De toevoeging van de volgende regel, de Main (). Functie: openbare functie, de Main () {VAR placeholder1: Sprite = createturretplaceholder (); placeholder1. X = 200; placeholder1. Y = 60; var placeholder2: Sprite = createturretplaceholder (); placeholder2. X = 60; placeholder2. Y = 260; var placeholder3? = createturretplaceholder (x); placeholder3. = 350; placeholder3. Y = 260; addchild (placeholder1); addchild (placeholder2); addchild (placeholder3); ghost_turret = nieuwe turret (); ghost_turret.alpha = 0,5; ghost_turret.mouseenabled = vals; addchild (ghost_turret); - fase. AddEventListener (event.enter_frame, gameloop);}, stap 13: bijwerking van alle torens, laten we een code in, gameloop (), functionele, elke (var.Een toren toren) {}, we gaan de torens, installatie, met alle torens op het podium, het gebruik van een verwijzing naar de ring, elke... En elke (var een toren toren) {toren. Update ();}, en beroept, update (), elke toren van de functie.We doen.Als je nu in de film, je moet altijd een gezicht op te zetten die muis.Wat gebeurd is, is dat een stap 14:,, het schieten, ons volgende doel is de toren van kogels.- op wie?In deze handleiding, zullen we de toren op elk punt schieten we op stap.We gaan zo:,, toe te voegen. Luisteren naar de fase van de toren, gebruikmaken van alle hierboven publiek, een beetje naar de toren van de berekening van de hoek, het creëren van een nieuwe kogel, zet hem in de juiste richting te laten luisteren.,, verklaring van functionele nomenclatuur, foto 's, toe te voegen aan de functie van de belangrijkste categorieën van privé - functie:,, foto' s van (E:MouseEvent) {}: ongeldig, en dan naar de Top van de luisteraars, klik op, Main () fabrikant: addEventListener, gebeurtenissen (mouseevent.click, fase, foto 's van); - fase. AddEventListener (event.enter_frame, gameloop);}, stap 15: het creëren van een kogel, wanneer we naar de foto' s, schieten (code), de functie van het creëren van een kogel, zullen we een nieuwe definitie van de functies, net als wijEn het creëren van een reserve.Dus de volgende functies:,,, createturretplaceholder () particuliere functie createbullet (): Sprite {var de kogel: Sprite = nieuwe Sprite (); ///////grafische variabelen g: grafische = bullet.graphics; g.beginfill (0xeeeeee); g.drawcircle (0, 0, 5); G. Endfill (); de kogel terug te keren;}, niets.We moeten de oprichting van een nieuwe, elfen, het in kaart brengen van een cirkel in het wit van kleur, en het terug brengen.Laten we nu doorgaan om ons, schiet (), functie, 16: stappen. En hoe je moet schieten?Oké, de tijd nog een code (). Elke (var een toren toren) {}, ten eerste, wij opnieuw op het toneel van de toren, elke..., ring, var new_bullet: Sprite = createbullet (); nu elke toren, creëren we een kogel voor de functie van het creëren van het gebruik en new_bullet.rotation = toren, hier bewaren we de kogel; in de toren van de rotatie van de waarde van de eigenschap.Waarom?Oké...... draaien de kogel is niet wat we willen.De kogel moet blijven gaan in de richting van een besluit in de richting van de toren, en een beetje van dit en we moeten de waarden van de kogel die toren, de tijd.We bewaren voor de toekomst van de roterende kogel, new_bullet. X = toren. X + wiskunde (new_bullet.rotation. Omdat math.pi /180 * 25 * * * * * * *); new_bullet. Y = toren. Y + wiskunde. Misdaad (new_bullet.rotation * * * * * * * math.pi /180) * 25; Deze twee lijnen van de kogel die het aanvankelijke standpunt, dat 25 pixels in een toren, ver (herinneren, draaien, goederen).Nogmaals, lees de driehoek als dit jou vreemd is, addchild (new_bullet);, en meestal de laatste stap, we de kogels in de arena van de lijst, daar ben je, schiet (), functionele eruit moet zien: de functie van foto 's, particuliere (E:MouseEvent): {als ongeldig elke (var. Een toren toren) {VAR new_bullet: Sprite = createbullet (); new_bullet.rotation = turret.rotation; new_bullet. X = toren. X + wiskunde (new_bullet.rotation. Omdat math.pi /180 * 25 * * * * * * *); new_bullet. Y = toren. Y + nummer leren. Misdaad (new_bullet.rotation * * * * * * * * * * * * * * math.pi /180 (25); new_bullet);}}, als je je spel, klik op een reserve, die zal worden ingezet, maar helaas...We hebben hier een probleem.Een extra kogel kan worden gecreëerd en de toren.Laten we dit probleem op te lossen, stap 17: waarom is er extra kogel?Begrijp dit, moeten we weten 3 bij de verspreiding van een gebeurtenis, die allemaal in drie fasen: het vastleggen van de doelstellingen,,,,, bubbel.De gebeurtenissen die de doelstellingen van de Top van de gebeurtenissen te beginnen.In alle elementen van het innerlijke kind, dit is, de verwerving, de fase.En dan, het echte doel te bereiken, dit is, de doelstellingen, de fase.En dan terug naar de top, gebeurtenissen, door dezelfde elementen in dit is, integendeel, bubbel, fase.In de fase van de bubbel, alle elementen voor de verspreiding van de definitie van het publiek van gebeurtenissen is veroorzaakt, het publiek worden uitgevoerd. En we hebben een klik, luisteraars onvermijdelijke en vervanging.Maar ook de fase van de vervanging van kinderen.Dus, als we bijvoorbeeld een klik, klik, verkrijgen en doelstellingen die als reserve.Bij de verspreiding van het podium naar de reserve, vangen.Het bereiken van de vervanging van de procedure, klik,,,, addturret (), de functie, het wordt uitgevoerd, wij in de fase van de torens.De verspreiding van de gebeurtenissen nu achteruit, bubbel, fase - als het stadium komen, het vinden van een voor het publiek, klik, en de tenuitvoerlegging ervan.Als gevolg van een schieten (), worden uitgevoerd en de kogels zijn toegevoegd aan het podium, dus dit is het probleem, maar de oplossing?Wat we moeten doen is stoppen met de verdere verspreiding van de gebeurtenissen, als het bereiken van het doel.Dit betekent dat, addturret (), we stoppen bij de verspreiding.En het zal aan het eind van het jaar, in de lijn van addturret (): addturret, private functie (E:MouseEvent): ongeldig {VAR target_placeholder: Sprite = e.currenttarget elfen; var een toren = nieuwe turret (); de toren. X = target_placeholder. X; de toren. Y = target_placeholder y; addchild (toren); de toren duwen.. stoppropagation (toren); e);}, we stoppen bij de verspreiding en de toevoeging van niet voldoen aan de fase.Met het oog op de meer algemene kader 3 gebeurtenissen script lezen na 3 - 101.Laten we verder spelen, artikel 18: heeft de kogel beweegt, creëren we kogels op fase, maar het beweegt niet.De volgende stap is de toevoeging van een gebeurtenis luisteraars, de kogels te noemen elk frame en bewegen.Ten eerste, we hebben een variabele van de verklaring van de snelheid van de kogel.De toevoeging van andere variabelen, de verklaring: particuliere ghost_turret:VaR toren, een privé - var - = [...]; particuliere var bullet_speed: eenheid = 3; en voeg de volgende snuffelen, majoor, klasse: private functie, movebullet (E: gebeurtenissen) {var de kogel: ongeldig? = e.currenttarget elfen; de kogel. X + = wiskunde. Omdat (bullet.rotation * * * * * * * math.pi /180) * * * bullet_speed; kogels. Y + = wiskunde. Misdaad (bullet.rotation * * * * * * * math.pi /180) * * * bullet_speed;}, we luisteren naar wat in dit:,, een luisteraar worden geactiveerd als referentie, verhoging van de locatie van de kogel, kogel in de bullet_speed, richting en, tot slot, het aanvullend bedrag, die we zojuist hebben gecreëerd. Enter_frame luisteraar, de verbeelding, de gebeurtenissenNiet in, schiet (). Functie: particuliere functie (E:MouseEvent foto 's): nietig {per (var een toren toren) {VAR new_bullet: Sprite = createbullet (); new_bullet.rotation = turret.rotation; new_bullet. X = toren. X + wiskunde (new_bullet.rotation. Omdat math.pi /180 * 25 * * * * * * *); new_bullet y = toren. Y + wiskunde. Misdaad (new_bullet.rotation * * * * * * * math.pi /180) * 25 (event.enter_frame; new_bullet. AddEventListener, movebullet, valse, 0, waar); addchild (new_bullet);}}, als je de test van je spelletjes, nu moet je zien, als je op de kogel.Maar als je goed kijkt, dan zie je de kogel blijft bewegen, als die...... zelfs als ze uit de fase in de vis.We moeten zo snel mogelijk de volgende stap weg van hun films niet de grenzen van de kogel, 19: vernietiging. En de kogel, zal de volgende code toe te voegen in de laatste, movebullet (). Functie: privé - functie, movebullet (E: gebeurtenissen): ongeldig {var de kogel? = e.currenttarget geest; x = + kogels. Wiskunde. Omdat (bullet.rotation * * * * * * * math.pi /180) * * * bullet_speed; kogels. Y + = wiskunde. Misdaad (bullet.rotation * * * * * * * math.pi /180) * * * bullet_speed; als (kogel. X < 0



Previous:
Next Page: