Kako stvoriti igre za Android. Neuspjeh u duljini godišnje, ili iskustvo razvoja igre za Android

Mnogi ljudi preuzimaju igre za mobilne platforme, misle: "Zašto ne donijeti san na stvarnost? Zašto ne biste napravili svoj proizvod koji će biti bolji i zanimljiviji Što već nudi interaktivnu industriju zabave?" Ako ne znate kako stvoriti igre na Androidu, ali želite učiti, ovaj članak će reći o nekim od zamki koje čekaju za početnike programere.

Ideja

Prva stvar je potrebna za stvaranje igre - ideju. U prvoj fazi može se napisati u bilo kojem obliku. Poželjno je da se "drži" i bila je jasna. Najvjerojatnije, u procesu ostvarenja, to će se promijeniti. Nešto će morati dodati, a nešto je potpuno uklonjeno ili uklonjeno. U tome nema ništa čudno - s daljnjim radom detalja, funkcionalnost ne samo da će se morati temeljito opisati, već i provjeriti na prikladnost.

Nije potrebno potpuno napustiti primarni opis ideje i početi stvarati ruske igre na Androidu, nakon što je propustila ovu fazu. Zbirka misli je glavna točka početka, od kojih je najlakše početi kretati. Osim toga, ideje navedene na papiru pogledat će namijenjenu objektivnost, možda je moguće unaprijed obavijestiti i ispraviti slabe točke.

Popis značajki

Od stvaranja igara na Androidu je nemoguće bez njihove detaljne studije, u ovoj fazi morat će nastaviti raditi i opisati značajke koje će biti u igri. Dajmo primjer: Bog ratnih serija je Slasher. Oružje glavnog karaktera - bič. Tijekom bitke možete napraviti duge lijepe kombinirane napade. Svaka razina je završena borbom šefa.

Ovaj popis je prilično oskudan i odražava samo glavne značajke, odnosno one koji dodjeljuju igru \u200b\u200bprotiv pozadine drugih. Zapravo, oni su mnogo više, ali druge značajke su sekundarne. Kada opisuju prvi bi trebali biti oni bez kojih vaša buduća stvaranje neće moći postojati, a potonji su manje važni da se mogu žrtvovati u korist brzine razvoja.

Diemonda

Od stvaranja nove igre bez ovog dokumenta je gotovo nemoguć, morat ćete raditi na tome. Diezok - smanjenje iz "Design Document" uključuje i najdetaljnije opise:

  • Model objekta i funkcionalnost entiteta.
  • Funkcionalne specifikacije.
  • Igra sadržaja.
  • Sučelje.
  • Ako je potrebno, može se dodati baza znanja.
  • Objektni model.

Model objekta

Model objekta sadrži informacije o svakom igračkom subjektu: oružje, oklop, NPC, čarolije, igrač. Jedinstvena je za svaku igru.

Pod funkcionalnošću treba razumjeti:

  • Je li moguće nositi kako bi se uklonilo poboljšati.
  • Će biti u inventaru nakon smrti.
  • Gubitak hoće li se snaga izgubiti tijekom vremena ili s nekim akcijama.
  • Povećavaju li se karakteristike karaktera ili skupine.
  • Ima li posebna svojstva skup.

Gore opisane bodove nisu obvezujuće, njihov se broj može smanjiti ili povećati za svaku pojedinačnu entitetsku skupinu.

Funkcionalne specifikacije

Da biste nastavili odgovor na pitanje kako stvoriti igre za Android, trebali biste razgovarati o sljedećem dijelu DZDoka. Funkcionalne specifikacije opisuju igrivost djela. Ovdje morate dijeliti točno koliko god je to moguće, što je u mogućnosti napraviti glavni lik i kako se implementira. Isto mora biti učinjeno za svaki NPC odvojeno. Osim igraćih znakova, kompleti prve pomoći, oružje, oklop, trebalo bi utjecati na elemente za zasluškivanje.

Zapravo, ovaj dio je konsolidacija pravila koja utječu na sve trenutke igre počevši od izbornika i završavaju štetom od utjecaja. Više nego što ćete raditi svaku pojedinačnu stavku, lakše će biti implementacija vašeg projekta.

Sadržaj

Prije stvaranja dobre igre potrebno je razmišljati i što će točno biti u njemu. Opisujući specifikacije, možete odrediti da će znakovi pucati s vatrenog oružja u koje se spremnici terete naplaćuju s krutim fiksnim oštećenjem. Ako uđete u NPC iz ovog parametra oduzimaju moć oklopa. Također ćete morati odrediti ime svakog pojedinog oružja, oklop, NPC. I, naravno, potrebno je opisati sadržaj - to su cigle, iz koje će se kasnije graditi cijela igra.

Sučelje

Sučelje je skup funkcija i gumba, s kojima će korisnik komunicirati s programom. Glavna stvar je da se treba uzeti u obzir kada je stvoren - praktičnost. Da biste razumjeli kako organizirati sve elemente, možete pokrenuti i analizirati najbolje uzorke žanra, premjestili su najprikladnije rješenja za vaš projekt.

Odabir motora ili dizajnera

Još jedan korak koji će morati ispuniti prije stvaranja igara na Androidu, - odabrati vremena prošla je ta vremena kada je sve potrebno učiniti od nule. Danas, uzimajući gotov konstruktor, možete obaviti sve radove pisanjem minimalnog koda.

Izbor motora vrijedi, na temelju nekih svojih značajki:

  • Uvjeti korištenja.
  • Sposobnosti.
  • Cijena.
  • Podrška programerima.
  • Dokument.
  • Veličina zajednice.
  • Jednostavnost.
  • Proširivost.

Uvjeti korištenja: Možda ste jednom kupili konstruktor, nećete postati njegov puni vlasnik. To se događa da u komercijalnom uspjehu igre morate platiti postotak profita developers dobiti. Glavna stvar - prije stvaranja igara na Androidu, provjerite proizvod odabrani za implementaciju.

Sposobnost: Oni moraju u potpunosti preklapati potrebe programera. Ako proizvod nudi više nego što trebate, igra se može lako proširiti, koristiti nove funkcije Dzidoka. Ali razmislite o ravnoteži! Koristite nerealan motor za Tetris je glup.

Potpora: Prije svega, važno je saznati ako proizvod ima razvoj? Pogreške se ispravljaju iz verzije u verziju? Prozin s novim funkcionalnošću i alatima? Motor koji se razvija je brzo, ima prednost preko motora, zamrznuta prije nekoliko godina.

Komuniman: Koji je broj onih koji koriste konstruktor? Ako korisnici imaju veliki broj, pronađite dokumentaciju, lekcije, majstori, primjeri nisu problem. Ako su korisnici relativno mali, te informacije mogu biti dostupne u volumenu koji će vam omogućiti da učinite nešto konkurentno.

Proširivost: Prije stvaranja vlastite igre, vježbajte kako biste saznali da li se nepotrebni moduli mogu spojiti na odabrani motor. Obično se koriste za izvoz ili uvoz trodimenzionalnih modela, zvukova, skripti, sprita. Ako postoji podrška takvim alatima, konstruktor nije ograničen na interne komunalne usluge za stvaranje sadržaja.

UDK.

Nerealno razvojni komplet nije najlakši za ovladavanje motor za igru, ali jedan od najmoćnijih. Ona ne koristi ne samo novak programere, već i velike korporacije. Ako tražite odgovor na pitanje: "Kako stvoriti 3D igru \u200b\u200bi koji motor to učiniti za to?" - Trebali biste istražiti mogućnosti UDK-a.


Da biste opisali programsku logiku, koristi se interni jezik skripte - nerealscript. Site Developer pruža mnoge lekcije, i snimljene na videozapisu i opisane u tekstnoj verziji. U isto vrijeme, oni pokrivaju maksimalnu funkcionalnost - od urednika prije pisanja njihovih skripti.

Okretni moment 2D / 3D

Moment je jedan od najpopularnijih dizajnera igara za mobilne platforme. Ima sve potrebne semete urednika i ispravljanje pogrešaka. Kada se razvijaju, programeri su posvetili veliku pozornost na praktičnost i pokušali učiniti sve komunalije najjednostavniji i pristupačniji.

Dizajner dolazi s dokumentacijom koja opisuje većinu mogućnosti. Na službenoj internetskoj stranici mogu se pronaći programi obuke i izvori nekoliko gotovih igara.

Za pisanje skripti u zakretnog momenta, ugrađen je jezik momenta skripte. Svojstva svakog objekta mogu se unaprijed definirati. Također u dizajneru ugrađenom u setu BOX2D, koji se bavi fizičkim izračunima.


Ako pokušavate pronaći odgovor na pitanje: "Kako stvoriti i koji motor to učiniti za to?" - Možete sigurno proglasiti taj okretni moment će vam omogućiti da napravite projekt za više igrača u kratkom vremenu. Sva potrebna funkcionalnost izgrađena je unaprijed, a primjeri koji se na službenim stranicama pokazat će kako ga koristiti je najracionalniji.

Studija

Nakon odabira motora igre, i dalje ostaje nerazumljiv kako stvoriti igru. Morat ćete potrošiti puno vremena na treningu. Budući da još nema naredbi, morat ćete sve učiniti sami: pisati skripte, stvoriti teksture, sprites, modele (ako je igra trodimenzionalna), napišite skriptu, test. Lako je pogoditi da će novak developer morati shvatiti osnove odjednom mnoge pisce, tester, umjetnik, dizajner.

Najbolje je naučiti u praksi, to jest, u procesu rada na vašem projektu. Drugi način istraživanja svih potrebnih je rad u poduzeću koji razvija igre. U isto vrijeme, nije potrebno odmah označiti na položaj glavnog programera: čak i ako ste pozvani da se uključite u rutinske poslove, nemojte odbiti pogledati igre iznutra.

Rad u bilo kojoj tvrtki počinje u nastavku, to je normalno. Da, i vještine slikova, razina dizajner, balansiranje, tester će biti vrlo koristan, a to su upravo one industrije u kojima većina juniora radi. Nakon nekoliko godina takvih razreda, moguće je naučiti kako stvoriti Dzeski i tehničke zadatke, učiti o Bagtrakeri i formirati kontaktnu bazu. Nakon obavljenog posla, kako bi stvorili ruske igre na Androidu, trebat će potrošiti mnogo manje sila, jer ste stilizirani sa svim potrebnim vještinama i vještinama.

Moguće je da, pružajući svoju kompetenciju u razvojnim pitanjima, nećete morati napustiti stari tim, štoviše, u njoj ćete uzeti vodeću poziciju s vašim projektom.

Kako stvoriti igru \u200b\u200bza Android?











Stvaranje igre za sve operacijski sustav uključuje znanje o programiranju. Čak i za najjednostavnije igre poput Flappy ptice, potrebno je znati njegove temelje. Pogledajmo kako se igra stvara primjerom operativnog sustava Android.

Motor

Prva faza u pisanju igre je instalirati motor. Mreža ima mnogo motora napisanih na raznim programskim jezicima. Naravno, plaćeni motori imaju više funkcija, razlikuju se u stabilnijim operacijama i otvorenim mogućnostima. Međutim, njihov trošak može biti vrlo velik. Stoga ćemo, kao primjer, uzeti besplatni libgdx motor.

Ovaj motor ima prilično velike mogućnosti i ima upute za uporabu na ruskom jeziku. Motor je multiplatform i stoga igra koja će biti napisana na njemu će biti u mogućnosti instalirati na druge platforme.

Okruženje za programiranje

Također vrlo važna točka je korištenje programskog okruženja. Pod ovim pojmom podrazumijeva alat u kojem će se pojaviti igra. U slučaju motora libgdx, programski medij će biti exlipce. Budući da je motor za igru \u200b\u200bnapisan na programskom jeziku Java, onda će koristiti programsko okruženje, morat ćete koristiti osnovne vještine i programiranje znanja na ovom jeziku. Stoga, ako ne znate Azov, morat ćete ih učiti.

Stvaranje projekata

Da biste napisali igru \u200b\u200bna Android, kao i na bilo kojoj drugoj platformi, prvo morate stvoriti projekt. Učini to lakšim. U slučaju libgdx, dovoljno je raspakirati motor u mapu i pronaći istu datoteku u njemu. Zatim ćete morati kliknuti na gumb "Projekt", a već ćete se naći u koraku od stvaranja projekta. Tada će biti potrebno samo odabrati platformu za igru \u200b\u200bi odrediti naziv projekta. U konfiguraciji morate odrediti gdje će biti objavljena igra u programskom okruženju. Sam motor će stvoriti projekt i reći mi ako učinite nešto pogrešno. Zatim možete otići u programsko okruženje i početi pisati igru.

Kao što možete vidjeti, stvaranje igre za Android i bilo koji drugi OS jednostavno je nemoguće bez znanja o osnovama programskih jezika. Međutim, sada motori postaju sve bolji i prikladniji za one koji samo pokreću put u ovom pitanju. Primjer ovog motora je i proizvođač igara. O ovom motoru i o stvaranju igre na njemu možete čitati u članku.

Problem: 13378.

Na Habréu postoji mnogo postova o različitim aspektima Gamedeve pod Androidom, ali nisam upoznao dovoljno razvojne povijesti i objavio i odlučio ga popraviti. U ovom članku, govorit ću o putu da sam i moji partneri prošli iz želje da stvorim dobru igru \u200b\u200bdo samog puštanja.
Tko se pitao koje lekcije naučimo i koje je iskustvo stečeno, dobrodošli u mačku.

1) Stvaranje razvoja gameplay i prototip

Sva igranje naše igre bila je utjelovljenje ideja navedenih u mom prethodnom članku. Ako je kratko, dobra igra pod Androidom je iznimno jednostavna, monotona, s jednom srebrnom kontrolom, bez kazne za smrt, ohrabrujuće i naleđene zvukove i prekrasnu minimalističku grafiku.
I jednom je zanimljiva ideja o igri došla u moju glavu, koja bi kombinirala sva gore navedena svojstva. Suština, kao što kažu, je li sljedeće: dvije uparene gondole lete u prostoru, a prepreke s simetričnim rupama u njima dolaze, kroz koje je potrebno letjeti.
Nešto što ideja podsjeća Jetpack Joyride i stara dobra igra u kojoj žurite kroz tunel, klizeći u rupe u rotirajućim krugovima.

Pa, budući da je ideja, morate napraviti prototip. U prototipu ništa ne bi trebalo biti višak. Nema potrebe izbornika, gumbi, grafikoni, prototip je čisti koncentrat prijenosnika. Moj izgledao je ovako: (Ovo je već jedna od kasnijih verzija, rano izgubljeno u stoljećima)

To je to da ćemo biti brušeni, mijenjati, poboljšati.

2) Staniranje igre i beta testovi

U svim fazama razvoja trebate razmisliti o krajnjem korisniku, provoditi testove za prijatelje, poznanike i rodbine. Budući da radite igru, vi osobno i znate sve o njoj, onda veliku priliku da izgubite objektivnost. Za to su potrebni alfa i beta testovi. Kada gledate drugu osobu koja koristi vašu prijavu, pogledajte kako se ponaša da se čini neozabitljivim u sučelju, gdje mu je teško za njega. Izuzetno je važno uzeti u obzir ovu fidbeck, a ne da izvučete uređaj iz ruke s krik: "Vidite kako je to potrebno."
Na primjer, u našoj igri, ljudi nisu svidjeli brzina Let i dužina gondola. Stoga sam morao smanjiti brzinu i skratiti gondole.
Nemojte se bojati globalnih promjena ako imaju koristi. Dakle, u našoj igri je promijenio orijentaciju leta, gondole kozmičkog broda postali su crvi, a kovanice za prikupljanje valute u igri postali su regrutirane zvijezde da napuste warp.

3) sučelje, zvuk, grafiku

Paralelno s iscrpljujućim igrivanjem vrijedi i sučelje. Čini se lakim poslovanjem, ali rad na prozorima za zakivanje i jelovnik ide mnogo više nego na mehaniku same igre. Sučelje mora biti vrlo jednostavno, lijepo i prikladno. Gumbi čine velikim tako da postoji jednako udobna na malim telefonima kao na velikoj tableti. Ljepota sučelja je također važna. Mi smo, na primjer, stvorili izvrsne zaklopke prilikom učitavanja scena i izbornika.

Još jedan iznimno važan dio igre je jednostavan i razumljiv tutorial. Evo kako smo to shvatili:

Kao što sam opisao u igri treba kriviti za neuspjeh i ohrabruju bonuse i druge dobre akcije zvukova. Našoj igri snimljene su s mjesta tamo sam našao zvonjenje kovanica i tužnog jecanja fanfara na smrt crva. Najvjerojatnije ćete morati kupiti, ali bi trebao biti jeftin.
Grafika mora biti minimalistička i crtani film. Prekrasni glavni likovi i ne privlače pozadinu - ovdje je sigurnosni depozit.

4) trgovina i roba u igri

Store je vrlo važna u igri, zbog čega igrač ostane i prođe. Trgovina bi trebala imati jednostavno i razumljivo sučelje koje nismo uspjeli u potpunosti ostvariti.
Možete prodati u trgovini bilo koje stvari. Mi smo, na primjer, prodali crve, pozadine i bonuse. Prodaja bonusi, važno je zapamtiti da bi trebali značajno utjecati na lakoću prolaska, ali ne i mijenjati mehaniku igre.
Najvažnije, po mom mišljenju, dio u sučelju trgovine je nepotpuno. To jest, ako ne i sve kupljene, sučelje treba jasno pokazati. Ljudi mrze nepotpunost i nastoje joj eliminirati (ovo je tajna uspjeha sustava od tri zvjezdice od ljutitih ptica). U našoj igri smo implementirali nepotpune mjehuriće s brojem mogućih kupnji pored particija trgovine.

Još uvijek kažem nešto o cijenama trgovine.
Kroz nekoliko rundi iOC, već to potone nešto za nešto kupiti, i mora jasno pokazati da se nešto već može kupiti. Ali najskuplja roba treba propisati cijenu kako bi igrač trebao igrati 20-30 puta prilično uspješno kupiti ih. Ovdje, na primjer, cijene naših crva, razmotriti činjenicu da iskusni igrač za krug dobiva od 2000. do 6000, a pridošlica od 300 do 1000 bodova.

5) Monetizacija

Ovdje je sve jednostavno. Za igre pod Androidom, izbor vrijedi između dvije opcije za zaradu. Ili oglašavanje, ili u igri, jer plaćene igre u Google Play. Nije osobito popularan. Odlučili smo kombinirati obje opcije. Oglašavanje u izborniku, to je mogućnost plaćeno gašenje, Mogućnost kupnje valute u igri za pravi novac.

6) Registracija stranice u Google Playu

Stranica u GP je lice vaše igre. Na to je da ljudi odluče preuzeti aplikaciju ili ne.

  • a) ikona. Najvažniji dio stranice. Gledajući je, korisnik će postaviti vašu stranicu. Trebalo bi biti jednostavno, minimalistički i lizali do savršenstva. Preporučljivo je prikazati na njemu glavni lik igre. Smatram da je naša ikona savršena


  • b) ime. Kratko i privlačan. Poželjno je od dvije riječi koje izražavaju svu bit igre. Naše smo nazvali brzi letak. Ukratko, jasno zvuči.

  • c) snimke zaslona. Da biste razumjeli o čemu se radi u igri, korisnik će gledati screenshotove. Oni ne bi trebali biti ništa manje dobri od ikone - svijetle, po mogućnosti s naknadnim obradom i pozivnim uređajima na njima. Na primjer, ovdje su naše dobre screenshotove


  • d) banner na vrhu stranice. Opcionalno, ali željeni dio lica igre. Dobar banner priključen na atmosferu na Google Playu

  • e) video. Video je poput screenshotova. Osoba ga gleda da vidi igru. Bolje je naručiti, za ručno izrađene valjke koje se šali.

  • e) ocjene. Korisnik će definitivno pogledati procjenu prije preuzimanja igre. Oni ovise samo o kvaliteti prijave.

  • g) opis. Razmišljam o opisu najvažnijeg dijela stranice. Gotovo nitko ne čita. Ali ako i dalje želite napisati dobar opis, pročitajte Dan Kennedy, kao što je njegova knjiga "Prodaja pisma"

7) Prva fidbeck i prvo ažuriranje

Isprva smo odlučili da ne pokrenemo široku reklamnu kampanju, ali prvo doživite igru \u200b\u200bna maloj publici i dobili fidbeck. Mehanika igre voljela je ljude, ali su pronađeni nedostaci. Na primjer, igra je previše nevenamička, u njemu postoji nekoliko boja i bonusa. Stoga već pripremamo prvo ažuriranje u kojima ispravite te nedostatke. Važno je objaviti ažuriranje u prvom tjednu.
Mi, na primjer, činimo ovo:

  • a) Novi pokretni i rotirajući prepreke koje će povećati dinamiku igre

  • b) blago smanjenu brzinu jer se igra čini prebrzo

  • c) Rainbow ispušni na cijelom zaslonu prilikom brige u warp. To će dodati ljepotu

  • d) Novi planeti i crvi. Potrebno je da se prošla igra vrati i novi igrači su bili tamo gdje se trude

  • e) još mnogo zvižduka

Smatram početnu fidbeck s otvorenog beta testa na maloj publici prije nego što promocija pokrene iznimno važnu stvar.
Također nemojte se bojati ako nešto neće raditi na nekim ludinima. Ovo je urođeni nedostatak androida, s tim morate živjeti i sa snagom kako biste uklonili probleme.

8) izdanje

Objavljujemo igru \u200b\u200bkoju smo zajedno s Habyruuser. Mnogi od njegovih savjeta pomogli su nam da poboljšate igru, a on je također pristao na opuštanje. Ovdje je priča o njegovim ustima:

"Svidjelo mi se izdavačka kuća da se nosi s cjelinom. Vrlo je zanimljivo pomoći početnicima, daju im savjet. Osjetite malog učitelja. Ako netko drugi želi osloboditi igru \u200b\u200b- pisati. Možda možeš pomoći. "

Dakle, ne razbijate svoje snove i napravite cool igre.

P.S.:
P.P.S.: Za vašu HabRapay, podsjećam vas: Pošaljite poruke o gramatičkim pogreškama u osobnom, a ne u komentarima.

Bok, HubraSom zajednica!

U ovom članku želim reći o mojoj (više nije prvo) iskustvo u razvoju igara mobilne platforme, povijest stvaranja jedne igre i dobivene rezultate. Kao što je jasno iz naslova članka, ovo iskustvo može se smatrati neuspjehom, ali onda kako vidjeti što će se reći u nastavku.

Prapovijest
Prije nekog vremena za dvije godine razvio sam igre Windows Phone, Tijekom tog vremena, 6 utakmica je objavljeno, samo 2 od njih su plaćene + suđenje i donijeli samo nekoliko dolara, ostatak je bio slobodan bez oglašavanja. Razvijene igre za ovu platformu, jer je došlo do XNA + C #, stvarno mi se svidio ovaj paket, ali onda su se glasine išle, a onda su stvarnosti da XNA podrška zaustavlja. Počela je potraga za drugim motorima, među kojima je jedinstvo mi se svidjelo. Odmah kažem da ne želim tvrditi o izvedivosti njegove uporabe za male igre, sve mi odgovara ovdje, čak i ako postoji urednik u drugim motorima, C #, cross-platformu itd. U tom trenutku podržava prozore Telefon u jedinstvu nije bio još, ali to mi nije smetalo, jer Više nisam htjela razviti pod ovom platformom, barem sve dok (kao što je rekao jedan prijatelj, zašto voziti mrtvog konja). Govoreći iskreno, moje igre bile su slabe, ali je izbor napravljen. Pretplata Windows Telefon Developer je zatvorena, počela je nova studija studija, prolaz tutoriala i, zapravo, razvoj igara.
Odabir igre, početi
Kao što znate, nemoguće je početi komplicirati. Iz tog razloga, ideja koju sam već počeo provoditi pod Windows telefon je izabran za probnu igru, naime, zagonetka u stilu braće pilota (screenshot), ali s malo drugačijom mehanikom. U mojoj igri, kada kliknete na objekt, status se ne uključuje u cijeli redak i cijeli stupac, ali samo odabrani objekt i u susjednim objektima (na vrhu ispod, s lijeve strane, desno). Da bi vizualno prikazali učinak prebacivanja, odlučeno je da se koristi izravno uključeno ili paljenje, a što bi moglo izgorjeti? Zvijezde! Dakle, ime sjaje sjajilo je dovoljno brzo. Razvoj je počeo.

Vrijedno je reći da proračun nije bio glatki račun. Dakle, sve je trebalo učiniti na vlastitu - programiranje, grafiku, promociju itd.

Razvoj
Bilo je ovdje praktički bez problema. Funkcionalnost i mehanika su dovoljno jednostavna, jer sam napravio temelj vrlo brzo i jednostavno. Morao sam se suočiti samo s različitim učincima u obliku rotacije, skale, klizanja itd.

Rotacija - U jedinstvu Postoje metode za rotiranje objekata. Ali iskreno, oni rade za mene. Ponekad čudno, dakle, djelomično sam se nasumično pokerao i tražio opciju koju ću organizirati.

Klizna je implementirana na zaslonu za odabir razine. Na zaslonu je prikazana samo dio ikona s razinama (veličina dijela ovisi o veličini zaslona), a ostat se prikazuje prilikom prelaska na gumbe "LEVE" i "desno".

Skaling se također pokazalo da je vrlo jednostavan čim sam shvatio. Glavna ideja - igra bi trebala izgledati dobro na svim veličinama zaslona. Mreža nema mnogo lekcija na ovoj temi, u osnovi morao sam proučavati forume. Usput, odmah želim savjetovati korisnike početnika jedinstva da ode na svoj engleski forum, on je vrlo živ, ljudi uvijek pokušavaju pomoći, za razliku od većine ruskih foruma raznih tema. Kao rezultat toga, došlo je do opcije, u kojem je odabrana određena veličina zaslona, \u200b\u200btada je koeficijent u odnosu na stvarnu veličinu zaslona telefona ili tableta. Svi objekti za igranje mijenjaju skalu i položaj ovisno o ovom koeficijentu. Osobno, moj koeficijent nije bio sam, jer Različite vrste objekata igara morali su drugačije razmijeniti zbog činjenice da su se smatrali drugačije na različitim zaslonima. Neki objekti na malim zaslonima mogu se ostaviti kao standard, drugi su se morali malo povećati u odnosu na prvi.

Razina
U prvoj verziji igre, htjela sam napraviti 20 razina. Hmm, zanimljiva igra bi bila. Prema mudrim savjetima, ovaj broj je proširen na ~ 100 (u planovima). Naravno, izmislite razine sebe i provjerite jesu li riješeni, uopće nisam želio. Ja sam programer, pa zašto se ismijavajte! Nakon nekog vremena, generator je bio spreman, koji je izdao sve moguće kombinacije razina navedene veličine, a zatim provjeriti je li razina odlučila i otkriti ga u tekstualna datoteka, To je bio najveći problem u ovoj igri. Ako je veličina igrališta 4 * 4 mjeren je broj razina s desetinama tisuća, onda je za polje 5 * 5 bilo već milijune za polje 6 * 6 ... dobro, shvatili ste. Da, ja sam programer, mogu napisati generator, mogu ga naučiti riješiti razinu, ali ne mogu ga naučiti odabrati koja je razina lijepa i ući će u igru \u200b\u200bi što će biti odabrano. Budući da su svi ovi milijuni trebali pregledati, ručno odaberite željeni. Prvo sam pokušao, ali onda sam shvatio razmjeru akcije (i htjela sam napraviti igralište čim 10 * 10) i postao sam loš.

Bez obzira koliko je cool, ali morao sam se vratiti na ručno crtež raznih uzoraka. Ovi uzorci su napravljeni u igri, osobno su bili riješeni osobno na mom telefonu (istodobno provjeravanje čvrstoće + estetski užitak iz rješenja razine). Neriješene razine su rafinirane, nezanimljive su odbačene. A nakon nekog vremena bio sam spreman za 120 razina smještenih u uzlaznom redoslijedu njihove veličine i složenosti unutar veličine.

Primjer stvaranja razine

Tako izgleda proces stvaranja razine. Grid je označena svim poljem, žute stanice mjesta gdje se nalaze zvijezde, bijele - gdje nisu. U gornjem lijevom kutu koda na razini, u obliku koji su pohranjeni i obrađeni u igri. U gornjem desnom kutu slike u svijetlozelenoj boji znači da je razina riješena od strane mene za takav broj koraka (još uvijek postoje crveni kvadrati u neriješenim razinama) i uskličnik Znači da je razina odabrana za ulazak u igru.

Broj 120 odabran je ne-slučajni. Na različitim veličinama telefona na razini zaslona za odabir razine, možete primiti drugačiji broj ikona tih razina. Uz broj 120, mogao sam podijeliti ikone na grupe s istim brojem ikona u svakoj, što je važno. Nisam htjela biti na prvim stranicama da budem 12 ikona, a na zadnjem pravom, na primjer, 10.

Grafika
Grafika u mojoj igri je prošla, po mom mišljenju, cijela evolucija! U početku sam htjela napraviti igru \u200b\u200bvrlo brzo i otpustiti "što je" s tim 20 razinama. I to mi se prvi put činilo stvarno nije loše, ali nakon što sam dobio nekoliko savjeta od drugih ljudi, pitao sam se teško i počeo svijevati sve. Osnova je bila poduzeta razne poznate igre, na primjer, ljutite ptice, od kojih sam uzeo ideju o izgledu UI, mjesto ikona razina kada su odabrani.

Stara grafička verzija

Glavni izbornik s dvije opcije za gumbe. Naravno, nakon prve sekunde izgledalo je lijepo! Sve dok je napravljen konačni daninga.



Igra informacije o igri


Prozor za odabir razine



Da bi igra nije izgledala mrtva, čini se da je ideja da nešto učini, što bi dalo suprotan učinak. Takva ideja bila je dnevna igra pozadina - ako izgledate malo, zvjezdano nebo na pozadini nije samo slika, postoje i druge zvijezde u boji (plava, žuta i blijedo žuta), a povremeno čak i leti pad zvijezda ! Da, ovaj učinak ne povlači originalnost i novosti, ali mislim da se dobro ispalo i pomogla stvoriti pravu atmosferu u igri.

Konačna verzija grafike

Glavni izbornik s otvorenim gumbima postavki (tako da ne spojite zaslon, u početku su minimizirani i otvoreni pritiskom na gumb Postavke)


Igra informacije o igri


Prozor za odabir razine


Prozor s razinom u procesu igre (jedna od opcija pozadine; svi 3, su odabrani nasumično)



Pažnja je posvećena apsolutno svemu. Objekti za igranje poboljšali su se da su lijepi. UI objekti (gumbi, ikone razine) poboljšani su tako da su i lijepi i intuitivno razumljivi samo njihovom slikom. Čak i za ikonu razvijene su nekoliko opcija, od kojih je konačna izabrana, a naknadno zamijenjena drugom, što mi se činilo prikladnijim. I koliko puta idući sve tekstove!

Ikona

Početne opcije za odabir

Konačna opcija

U rasporedu grafike, TexturePacker program mi je jako puno pomogao, preporučujem ga! Nju besplatne značajke Dovoljno je za naše svrhe, a atlasi koje prikuplja stvarno nije loše. Pripremio sam nekoliko atlasa - jedan za gumbe i dva seta za igre objekte (s lokalizacijom na ruski i engleski). Istina, B. stara verzija Jedinstvo koje sam morao smanjiti željene dijelove s UV koordinatama, što je pomalo nezgodno. U nova verzija Jedinstvo sve se može učiniti mnogo lakše s Sprites.

Zvukovi i glazba
Ovdje nema problema. Postoje mnogi resursi u kojima se zvukovi mogu kupiti ili dobiti besplatno. Jer Proračun nije bio, izabrao sam nekoliko prikladnih zvukova i melodija da ti resursi omogućuju besplatno, tj. Sve je apsolutno legitimno i bez krađe (da, za mene je važno).
Glavna ideja bila je stvoriti opuštenu atmosferu u kojoj igrač može misliti s mirnom glazbom na pozadini. No, prvo ažuriranje igre promijenilo je situaciju - dodana je više ritmička glazba s mogućnošću odabira željene melodije (mirno ili brzo) u postavkama.
Oslobađanje, promocija, rezultati
Naprećat ću da ću pustiti igru \u200b\u200bsamo pod Androidom, jer Imam odgovarajući telefon, ali nema iOS uređaja, na kojima sam mogao testirati igru, a ne želim objaviti bez stvarnog testa. Isti je razlog činjenica da je registracija u Google Play jednokratno plaćanje od 25 USD, a Apple treba platiti 99 dolara svake godine. Možda ću osloboditi igru \u200b\u200bi pod ios, ali nešto kasnije.

Odmah nakon objavljivanja napisao sam o igri na brojnim android forumima i počeo slijediti rezultate koji su se pojavili uskoro, ali na to je praktički zaustavljen. Tada sam izdao dva ažuriranja, o svakom od kojih je izvijestio na forumima (barem neki, ali čekić). Tu je i mogućnost cross-razreda (stavljate nečiju visoku ocjenu i zamolite vas da cijenite svoju igru). Ali to znači instalaciju cijele hrpe drugih ljudi (ne uvijek barem neke dobre) igre na telefon, moguću obmana od drugih (nakon svega, nije činjenica da će cijeniti vašu igru \u200b\u200bkao odgovor), jer Brzo sam odbio iz ove opcije.

Trenutno je broj preuzimanja vrlo mali. Pretpostavio sam da će postojati određeni neuspjeh, ali tako ... Djelomično je zbog činjenice da postavljam na forumima ne samo link na Google Play, već i sebe apk datoteka, Sudeći prema statistici, njegovo preuzimanje premašuje preuzimanje igara s tržišta.

Igra je besplatna. Kao monetizacija odabrana je reklamna emisija. U procesu razvoja, htjela sam povezati nekoliko modula - ako to nije učinilo, pokažite drugi, itd. Poznati crtboost bio je povezan, a onda sam pokušao povezati Revmob i Playhaven, ali neki hitovi su izašli s njima (iskreno, nisu zaradili u igri, nisam saznao razlog, jer je samo jedan modul ostao, od koji su svi prihodi morali ići. Ali ako uzmete u obzir gore navedeno (broj preuzimanja i želje korisnika kliknite oglašavanje ili instaliranje oglašenih igara), razumijete da dohodak nije.

zaključci
Kao što kažu, loši rezultat je također rezultat. Od početka razvoja na jedinstvu (ne smatram da je vrijeme za Windows telefon), prošao je oko 14-15 mjeseci. Na dobar način, takva igra je napisana mjesecom nepotpunog zaposlenja, a to je zalihe. Razlog je bio u nedostatku vremena. Ne, vrijeme je bilo dovoljno - nekoliko sati navečer, nekoliko sati tijekom vikenda bilo je dovoljno da nastave napraviti igru \u200b\u200bbez duge stanke. I nedostajala mi je moralno blagostanje. Tijekom tog razdoblja bilo je mnogo osobnih problema, dok je postojala želja da se igra, postojale su ideje, ali sjeo sam na računalo, glupo je pogledao u monitor, a onda sam shvatio da nisam imao inspiracije da mogu ne shvaćate apsolutno ništa i isključili ga. Tako je letjela ove godine.

Počnimo s negativnim točkama. Proveo sam mnogo vremena na igri, ali ovdje okolnosti ne ovise o meni. Igra iskreno nije uspjela, nije mi donijela prihod (dobro, ne smatraju se nekoliko dolara). I s ove točke gledišta ovo je potpuni neuspjeh.

Ali pozitivni trenuci, vjerojatno više. Prije svega, ovo je iskustvo! U ovoj igri sam naučio glavne mogućnosti jedinstva s jednom rezervacijom - igra je razvijena na staroj verziji, gdje nije bilo 2d. Sada se 2D igre mogu razviti s ovom novom tehnologijom, jer većina mojih radnih tokova iz igre može već biti potrebno.

Na ovoj igri shvatio sam da je grafika stvarno važna! Nema potrebe zaboraviti na to, nikad! Ako sam izdao igru \u200b\u200bs prvim mogućnostima dizajna, bio bih stidio za njega. Sada sam izdao prekrasnu igru. Da, nije uspjela, ali još sam ponosna na nju! Ako postoji proračun, možete unajmiti dobar dizajner. Ako ne, onda ponovno iscrpljuju sve i opet dok se rezultat ne isplati.

Mislim da je jedina velika pogreška koju sam napravio ovdje je izbor žanra igre. Vjerojatno, većina igrača voli akciju, arkada, možda nešto drugo, ali oni zapravo ne vole zagonetke ovog tipa. Ljudi vide moju igru, netko ne voli grafiku, a netko ga presijeca zbog žanra. A ako govorimo o sljedećoj igri, koju bih razvio, promijenio bih samo žanr, sve ostalo bi učinilo isto!

Oznake: dodajte oznake

Pozdrav svima.
Ova lekcija je napisana u ožujku 2012. Sada sam ga odlučio objaviti na ovom resursu. Kod se odlučio ne mijenjati, ja ga pitati puno da ne pronađe grešku (ja bih rekao). Malo je rafiniran tekstom lekcije i komentara u kodu. Svrha lekcije nije učiti igru \u200b\u200bkoja u jednoj lekciji je nemoguća u sebi, ali pokazati osnove rada s mobilnim zrakom. Zašto Android, a ne ios? Jer u vrijeme pisanja lekcije, samo je bio. Pod iOS-om sve se radi gotovo na isti način, ali postoje neke razlike koje su napisane na kraju drugog dijela lekcije.
Bit će mi drago na bilo kakve komentare, komentare, naznaku pogrešaka.

Malo teorije.

Adobe Air omogućuje stvaranje na Actionscript 3 i MXML za iOS i Apsoroid aplikacijekoji za korisnika neće razlikovati bilo koga. Oni, kao i bilo koje izvorne aplikacije, mogu se distribuirati branded trgovine Apple AppStore i Google Apps Trgovina igračaka. (bivši android Tržište). Iz inačice zraka 3.2 pojavio se potpora Fage3D. Za rad Air Applications na Androidu morate instalirati na uređaj za runtiranje zraka ili prilikom sastavljanja utimenovanje zarobljenika, ugrađeni medij je ugrađen u APK. U isto vrijeme, instalacija zračnog izvođenja nije potrebno za uređaj.

Kada radite s mobilnim uređajima, treba imati na umu da su rezolucije njihovih prikaza u nastavku (već postoje one koje su viši) od monitora računala i njihove fizičke dimenzije su također znatno manje. Tu su i takvi koncepti kao "fizička veličina piksela" i "gustoće piksela", tako da morate obratiti pozornost na veličinu raznih grafičkih elemenata (tipke, znakova igre, itd.). Općenito, ovo je cijela znanost i nećemo se detaljno zadržati.
Metoda ulaza - zaslon osjetljiv na dodir. Za obradu dodirnog unosa postoji poseban događaj osjetljivog na dodir, iako se događaji miša ispravno obrađuju. Tu su i druge značajke koje ću reći tijekom lekcije.
Učinit ćemo vrlo jednostavna igra Za Android. To će biti moguće pokrenuti na pametnim telefonima, tabletama i bilo kojim drugim uređajima.
Okruženje za implementaciju zraka ima neke hardverske i softverske zahtjeve.
Za Android izgledaju ovako:
- Android verzija 2.2 ili više;
- procesor s ARM7 arhitekturom s učestalošću od najmanje 550MHz;
- Najmanje 256 megabajta RAM-a.

Zahtjevi za druge platforme mogu se naći kao referenca.

Da bismo izvršili lekciju, trebat ćemo sljedeće:
- flashDevelop 4.2;
- Flex SDK 4.6;
- Zračni SDK 3.5;
- knjižnica iz Greensocka;
- uređaj na androidu. Možete učiniti i emulator, ali to nije tako zanimljivo;
- instaliran na zračni uređaj.

Verzije su naznačene stvarne u vrijeme objavljivanja lekcije. Već postoje FLEX SDK 4.8, ali u stvari to je isti 4.6. A od 4.8 Imam FlashDevelop počinje absora apsorbirati RAM, nije jasno zašto. Bolje je koristiti zadnja verzija Air SDK, budući da se dodaju nove značajke sa svakim izdanjem i greške su ispravljene. Zračni SDK samo trebate raspakirati Flex SDK mapu s zamjenom datoteke i povezati Flex SDK kako biste plašili.

Što ćemo točno učiniti.

Izrada ćemo biti mala igra. Čini se sljedeće: na vrhu zaslona. Brojke padaju. Dno je platforma, koju trebate uhvatiti ove brojke ili ne uhvatiti ovisno o njihovom tipu. Igra se sastoji od tri ekrana:
- Glavni izbornik s pozadinom, logotipom i dva gumba. Jedan za početak igre, drugi za izlaz iz aplikacije;
- Igra zaslon. Sadrži platformu koja pada brojke kao i pokazatelje trenutne razine i bodova. I izlazni gumb u glavni izbornik;
- Prikaz zaslona broja bodova s \u200b\u200bgumbima za izlaz iz izbornika i "ponovno reproducirati".

Par screenshots:

Početak.

Za početak, provjerite je li uređaj instaliran na uređaju, ako nije instaliran, instalirati. Također instalirajte upravljački program za vaš uređaj za povezivanje s kabelom.

Pokrenite FlashDevelop i stvorite novi Air AS3 mobilni App projekt. Tako izgleda stvoreni projekt:

Ono što vidimo ispred njih:

Mapa šišmiša sadrži nekoliko batch datoteke:
- CreateEcertifinate.bat. Trebate generirati samopotpisanu certifikat za Android. Bez ovog certifikata neće biti moguće prikupiti apk;
- InstallairRuntime.bat. Postavlja vrijeme izvođenja zraka Android uređaj Od% flex_sdk% trčanje android uređaja runtime.apk. Bolje je instalirati najnoviju verziju Android Play. Trgovina;
- Packager.bat. Paketi USB flash pogon u APK (Android) ili IPA (iOS);
- Setupapplication.bat. Sadrži razne parametre aplikacije (staze do certifikata, lozinke od njih, naziv aplikacije, itd.);
- Setupsdk.bat. Sadrži put do FlexDK-a. Određuje se automatski, ako se ne odredi, morate se ručno registrirati. I također sadrži put do Androidsdk. Zapravo, potrebne su samo tri datoteke: adb.exe., Adbwinapi.dll i Adbwinusbapi.dll., Štoviše, oni su već sadržani u flashdevelop distribuciji, a put do njih također se propisuje.

U mapi bin. Kompilirana SWF datoteka je postavljena.
U mapi cERT. Certifikati moraju lagati.
Mapa ikona Sadrži skupove ikona.
Dvije standardne mape lib i src Za knjižnice i klase.

Korijenska mapa:
- standard za aplikacije za zrak application.xml. s različitim parametrima aplikacija;
- Packageapp.bat. Omogućuje vam da odaberete platformu i vrstu pakiranja aplikacije. Nakon odabira pakiranja. Pojavljuje se mapa dist. c apk ili IPA;
- Run.bat. Ispunjava prijavu mobilni uređaj i on tamo pokreće;
- Dvije datoteke Air_android_readme.txt i Air_os_readme.txt s uputama.

Postavljanje projekta.

Otvorite postavke projekta Projekt / prziti., Promijenite boju pozadine na crnu. Rezolucija nema vrijednost. Prilagodit ćemo se trenutnoj.
Izložba izložbe verzije 3.5. Kao rezultat toga, parametri bi trebali izgledati ovako:

Otvorite datoteku application.xml.U njemu, u drugoj liniji, promijenite verziju zraka za 3,5:

Postavke otvorenog zraka - Projekt / Air App svojstes, U prozoru koji se otvara, idite na karticu Početni prozor., U ovom prozoru odaberite Ne-prozorene platforme.
Prebacimo način prikaza na portret. I isključite auto orijentaciju, jer će igra biti samo u portretnom načinu. Izložba načina rada CPU. ili Direktno., Postavke bi trebale izgledati ovako:


Zatim, točno u FlashDevelop dvaput kliknite Otvori datoteku Run.bat. I promijenite niz goto desktop. na goto android-debug, Potrebno je testirati projekt na uređaju. Ako odeš goto desktop.Projekt će biti lansiran na emulatoru.

Sada moramo generirati certifikat. Bez nje, neće biti moguće spakirati aplikaciju v.apk. Ako mapa cERT. Nitko u projektu, ne stvorite ga ručno. To je važno, jer datoteka šišmiša neće biti u mogućnosti doći do nepostojeće mape. Pokrenite datoteku. Šišmiš / creacecertificate.bat.(Desni klik / Izvrši), u mapi cERT. Naš certifikat se pojavljuje sa standardnom lozinkom "FD". Važno je reći da je Android aplikacija mora potpisati certifikat. Ono što smo generirali je takozvani "certifikat za razvoj". U ovoj fazi je dovoljno.

Iz arhive s mjesta Greensock.com Dobijte datoteku greensock.swc., stavite ga u mapu lib I povezivanje s projektom (desni klik / DODAJTE u biblioteku).

S postavljanjem svega. Dodajte željeni raspored i ikone na projekt. Stvorite mapu imovina. I staviti grafiku iz arhive tamo, također zamijeniti ikone. Ili možete izvući vlastite analoge.

Doći do koda.

A sada najvažnija stvar i zanimljiva - pišemo kodeks. Igra klase izgledaju ovako:

Itemtype. - Vrste objekata. Oni koji najviše padaju na vrhu zaslona
Konstante paketa (/ ** * statički konstantan za određivanje vrste objekta igre. * * @Author iluzor * / javni klasactType (/ ** normalan objekt. Dodaje jedinicu za bodove * / javno statičko const dobro: string \u003d "Goodyitem" ; / ** "vrlo dobar" objekt. Dodaje 5 to bodova * / javni statički const vrlo_good: String \u003d "VrhoodItem"; / ** "Angry" objekt. Uzmi jedinicu iz naočala * / javnih statičkih konstantnih zlih: String \u003d " zloslona;))
ScreenType. - Vrste zaslona. Imamo ih troje i opisani su gore
Paket konstanti (/ ** * Statične konstante za određivanje tipa zaslona * * @Author iluzor * / javni razred ScREAL: (/ ** Glavni izbornik * / Javni statički CONSTIN Main_MENU: String \u003d "Mainmenu"; / ** igra zaslon * / Javno navođenje Const Game_Screen: String \u003d "Gamescreen"; / ** zaslon s prikazom rezultata igre * / javnog statičkog consport_screen: string \u003d "screscreen";))))
Gameevent - Igra događaji
Paket događanja (** * * * * * * * * * * @Author iluzor * / javna klasa GameEvent proširuje događaj (/ ** iz igre u glavnom izborniku putem gumba MENU * / Javni statički COST EXIT_GAME: String \u003d "EXITGAME"; / ** Igranje * / Public Static Const Game_Over: String \u003d "GameOver"; Javna funkcija GameEEVent (Vrsta: String, Bubbles: Boolean \u003d FALSE, CALSE): Boolean \u003d False) (Super (vrsta, mjehurići, odustajanje) ;) Funkcija javnog nadjačanja Clone (): događaj (povratak novog GameEvent (vrsta, mjehurići, odustani);) javni nadjačaj funkcija tostring (): niz (povratak formittring ("Gameevent", "tip", "mjehurići", , "Eventfase");)))))
Sada razmislite o paketu elementi, To su različiti grafički elementi koji se koriste u igri.

Dugme. - Klasa gumba. Sadrži grafička slika i tekst. Ima dvije države: pritisnute / ne pritisnute
Elementi paketa (uvoz com.greensock.TweendLite; uvoz Flash.display.Bitmap; uvoz Flash.display.Sprite; uvoz Flash.events.events.events.events.TouchEvent; Uvoz Flash.Text.Text.Text.Texts; Uvoz alata.Tools; / ** * Klasa gumba, koji se koristi u izborniku i drugdje. * * @Author iluzor * / Tipka za javne klase Proširi Sprite (/ ** @Private tekst za prikaz na * / privatno VAR tekst : String; / ** @Private bitmap za gumb / privatni VAR tipkovni gumb: Bitmap; / ** * Dizajner sluša scenu. * Ovdje pozornica trebamo u slučaju slavine na gumb i odmaknite prst od Gumb * * @param Tekst tekst za prikaz na gumb * / javna funkcija gumba (Text: String) (this.text \u003d Text: AddEventListener (event.addded_to_stage, dodatak);) / ** * @private dodajte na scenu . * Dodavanje grafike i tekstualnog polja. * * @Param e događaj Dodaj na scenu * / privatnu funkciju Donošenje (e: događaj): prazni (izventirani tvari (event.addded_to_stage, dodatak); Pomoću gumba \u003d bitmaps.buttonbitmap; // dodajte bitmap gumbag.smooth \u003d TRUE; Adhild (gumba); Var Textfield: Textfield \u003d Tools.generateTextfield (50, tekst); // Generirajte tekstualno polje ... Textfield.x \u003d (gumymage.Width - Textfield.Width) / 2; // ... pozicioniranje i dodajte na zaslon Textfield.y \u003d (gumymage.height - Textfield.Height) / 2; Addchild (Textfield); This.addeventlistener (touchvent.touch_begin, touchbegin); // dodirivanje gumba AddEventListener (event.Removed_from_Stage, uklonjeno nakon toga); // Uklanjanje slušatelja iz pozornice) / ** * Animiranje alfa na pola * * @param E prst Dodirni događaj na * / privatni gumb Touchbegin gumb (e: touchvent): praznina (tweente.to (gumba, (alfa : .5)); Faza.AdDeventListener (TouchEvent.Touch_End, dodir); // Ukloni prst s zaslona nakon dodirivanja gumba) / ** * Povratak Alpha u jedinicu * * @param E otisvjetni događaj Dodir (E: TouchEvent): praznina (tweente.to (gumba, ,.3, (alfa: 1)); faza.RemoveeventListener (TouchEvent.Touch_End, dodir)) / ** * Kada izbrišete pozornicu, ne ubijete više Neophodni slušatelji * * @ param e događaj brisanje s scene * / privatne funkcije uklonjenofrom (e: događaj): Void (EventEventListener (Event.Removed_from_Stage, uklonjeno); this.removeeventListener (Touchevent. Touch_begin, touchbegin); Faza.RemoveventListener (TouchEvent.Touch_End, dodir)))))))))
Artikal. - objekt koji pada odozgo tijekom igre. Možda tri vrste, opisane su u kodu
Elementi paketa (uvozne konstante Oblik (/ ** AMETIPE TIP TIP.ITEMTYPE * / javni VAR tip: String; / ** amethema brzina * / javna VAR brzina: UINT; / ** * U dizajneru, grafička stavka je izvučena. * * @Param tipa tipa tipa AETEMA * / Javna funkcija Stavka (vrsta: string) (thip.Type \u003d tip; prekidač (vrsta) (// Provjerite koji tip se prenosi na konstruktor // i ovisno o tome nacrtamo odgovarajuću grafiku. Slučaj itemtType.good: // nacrtajte zeleni kvadrat things.graphics.beginfinfill (0x00a400); thig.graphics.Drawrect (0, 0, 14, 14); this.graphics.endfill (); pauzu; slučaj). Slučaj kvadrat s thing.graphics sjaj. početak (0x01a6Fe); thig.graphics.Drawrect (0, 0, 14, 14); this.graphics.ddfill (); this.filters \u003d; pauza; Krasn Grafički krug (0xff0000); grafike.Drawcircle (0, 0, 7); grafike.Idfill (); Pauza; )))))))))))
Platforma. - "Glavni lik" igre. Mala platforma koja upravlja igraču.
Elementi paketa (uvoz Flash.display.shape, uvoz Flash.filters.glowfilter; / ** * platforma za ribolov, koji se nalazi na dnu zaslona. * Sve je vrlo jednostavno, nacrtani bijeli pravokutnik i filtar sjaj se primjenjuje. * Odvojena klasa kako bi se platforma doživljavala kao zasebna jedinica za igru. * * @author iluzor * / platforma za javnu klasu (this.graphics.clear (); ; ovo. grafike.Drawrect (0, 0, 110, 24); this.graphics.ddfill (); this.filters \u003d;))))))
Paket alati. s alatima.

Klasa Bitmaps. Sadrži priključenu grafiku i metode za dobivanje izvana
Paket alati (uvoz Flash.display.Bitmap; / ** * "Generator" bitmapa od priloženih datoteka * * @author Illuzor * / Bitmaps javnih klasa (/ ** @Private priložene datoteke datoteke File * / Private Static Var BackInBitMit: klasa ; / ** @Private priložene grafike datoteke * / privatna statička var gumbat će: klasa; / ** @private priložene datoteke grafike logotip * / privatni statički var logobitmap: klasa; / ** bitmap pozadini * / javna statička funkcija dobiti backIctMap () : Bitmap (povrat novog backItMitmap () kao bitmap;) / ** bitmap gumbi * / javna statička funkcija Get ButtonBitMap (): Bitmap (Povratak novog gumba () kao bitmap;) / ** bitmap logotip * / javna statička funkcija dobiti logobitmap (): Bitmap (vratiti novi logobitmap () kao bitmap;)))
Klasa Alati. Sadrži druge alate. Do sada, samo follinski generator
Paket alati (uvoz Flash.text.textfield; Uvoz Flash.Text.Text.Textformat; / ** * Klasa s malim alatima. * Do sada, sadrži samo generator tekstualnog polja. * * @Author iluzor * / javni klasni alati (/ * * * Tekst Phildo Generator za određene parametre * * @param Veličina veličine fonta * @param tekst tekst za prikaz * @param u boji teksta boja * @return konfigurirani tekstni okvir * / javna statička funkcija GenerateTextfield (veličina: UINT, TEXT: String \u003d " ", Boja: UINT \u003d 0xfffff): Textfield (var Textformat: Textformat \u003d novi textformat (); textformat.color \u003d boja; textformat.size \u003d veličina; var Textfield: Textfield \u003d New Textfield. .defaultTextformat \u003d TextFormat; Textfield.Text \u003d Text; Textfield.Width \u003d Textfield.Textwidth +4; Textfield.Height \u003d Textfield.Textheight \u003d Textfield.Textheght +4; povratak Textfield;))
Aplikacije aplikacija iz paketa ekrani.

Glavni izbornik. - Glavni izbornik igre. Prikazuje se odmah nakon lansiranja. Sadrži gumbe, pozadinu i logotip.
Ekrani paketa (uvoz Flash.display.Bitmap; uvoz Flash.display.Sprite; Uvoz Flash.events.events.events.event; uvoz Flash.display.displayobject; uvoz alati.bitmaps; uvoz elemenata.Button; / ** * klasa glavne igre Izbornik. * Bit će pozadinu, logotip i dva gumba. * * @author iluzor * / mainmenu javne klase proširuje sprite (/ ** gumb za reprodukciju * \u200b\u200b/ javni VAR PlayButton: gumb; / ** "Gumb * / javnost VAR EXITBUTTON: / ** * U konstruktoru samo slušajte dodati na scenu * / javnu funkciju mainmenu () (addEventListener (event.addded_to_stage, dodatak);) / ** * stvoriti i dodati pozadinu, logotip, tipke * * @Param e događaj dodan na scenu * / privatnu funkciju Adddedtostage (e: događaj): praznina (EventEventListener (event.added_to_Stage, Addtostage); // Napravite bitmap pozadine i dodajte je u scenu VAR pozadinu: bitmap \u003d bitmaps. AckeyBitmap; pozadina.Smooting \u003d TRUE; Addchild (pozadina); placebackrolilište (pozadina); // Pozadina pozicioniranja // stvoriti bitmap logotipa, postavite veličinu u odnosu na širinu scene // postavite položaj i dodajte u scenu var logo: bitmap \u003d bitmaps.logobitmap; logo.smooth \u003d TRUE; logo.Width \u003d faza.stagewidth * .7; logo.scaley \u003d logo.scalex; logo.x \u003d (Faza.stageWidth - logo.Width) / 2; logo.y \u003d faza.stageheight / 5; Addchild (logo); // kontejner za gumbe za praktično pozicioniranje ovih gumba VAR GumbiContainer: Sprite \u003d New Sprite (); Adhild (gumbicontainer); // Stvaranje gumba "Reprodukcija" i "Exit", odgovara njihovoj veličini i dodajte u PlayButton \u003d Contert ("Reprodukcija"); Gumbiccontainer.addchild (PlayButton); playButton.Width \u003d faza.stagewidth / 2; PlayButton.scaley \u003d PlayButton.scalex; ExitButton \u003d Novi gumb ("Izlaz"); GumbicContainer.addchild (ExitButton); ExitButton.y \u003d Gumbicontainer.Height + 25; ExitButton.Width \u003d faza.stagewith / 2; ExitButton.scaley \u003d ExitButton.scalex; // Pozicioniranje spremnika s gumbima Gumbicontainer.x \u003d (Faza.stageWidth - gumbicContainer.Width) / 2; gumbiccontainer.y \u003d (faza.stageheight - gumbicContainer.Height) / 2 + faza.stagewidth / 6; ) / ** * Ova značajka čini da se displayobject prenese na njega ispunjava cijelu scenu * bez mijenjanja omjera. U našem slučaju, ovo je pozadinska slika * * @param ScaleDobject Displayobject za montažu * / privatnu funkciju Plastebook (ScaleDobject: DisplayObject): Void (ScaleDobject.scalex \u003d ScaleDobjekt.scaley \u003d 1; var skala: ako (ScaleDobject.Width / scaleDobject. Visina\u003e Faza.stageWidth / Faza.stageHeight) (skala \u003d faza.stageHeight / ScaleDobject.Height;) Drugo (ScaleDobject.stageWidth / ScaleDobject.Width;) ScaleDobject.x \u003d (Faza.stageWidth - ScaleDobject.Width) / 2; ScaleDobject.y \u003d (Faza.stageHeight - ScaleDobject.Height) / 2;))))
U klasi Gamescreen. Gameplay prolazi. Ameme padaju na vrh. Ovisno o njihovom tipu, morate ih uhvatiti ili izbjeći. Upravlja ciklusom igre
Uvoz Constants.TweendLite; Uvoz konstanti. Uvoz Elements.Button; Uvoz Elements.Platform; Uvoz Elements.Atem; uvoz događaja.gameevent; uvoz flash.display.events.events.eveents.moseevent ; Uvoz Flash.events.Terevent; Uvoz Flash.TouchEvent; Uvoz Flash.Text.Textfield; Uvoz Flash.utils.Timer; Uvoz alati.Tools; / ** * Glavna klasa igra. Što radi proces igre: * Na dnu zaslona nalazi se platforma koja se može premjestiti u lijevo / desno za pomicanje prsta preko zaslona u bilo kojem dijelu zaslona. * Takozvani atemi padaju odozgo, što mogu biti tri vrste: * - ItemType.good - običan predmet. Prilikom prikupljanja dodaje jedinicu na naočale, prilikom prolaska (skrb za donju granicu zaslona) * uzima jedinicu iz bodova * - itemtype.y_good - "Ojačani" ahem. Prilikom prikupljanja dodaje 5 na naočale. Prilikom prijenosa ništa se ne događa. * - ItemType.evil - "Zli" Aytem. Kada se prikupljate Čini jedinicu od naočala. Kada se ne dogodi ništa. * * Kada je vrijednost bodova manja od pet, gubitak se broji, a rezultat igre se smatra maksimalnim brojem bodova. * Uz svaku novu razinu stavki, oni se kreću brže nego u prethodnom. * * Od gore navedenog s lijeve strane postoji idiot spaljenih naočala, na desno odozgo izlaznog gumba u glavni izbornik. * Na dnu u središtu ispod platforme nalazi se pokazatelj trenutne razine. * * * @Author iluzor * / javna klasa Gamescreen proširuje Sprite (/ ** @Private platforme i stavke kontejner * / privatni VAR GameContainer: Sprite; / ** gumb za izlaz iz glavnog izbornika * / privatni VAR Mynubutton: / ** @Private platforma * / privatna var platforma: platforma; / ** @Private igra tajmer. Trebate dodati novi atema * / privatni VAR gametimer: Timer; / ** @Privirati trenutni broj * / privatni Var tekući listlelvelvel : UINT; / ** @Private struje Broj bodova * / privatni var struje: Int; / ** @Private tekstni okvir za prikaz razine broja * / privatni var LeveltiptExt: Textfield; / ** @Private tekstni okvir za prikaz bodova * / Privatni var Robnext: Textfield; / ** Maksimalan broj bodova * / Javni var MaxScore: UINT; / ** * U konstruktoru, slušati scenu. * / Javna funkcija Gamescreen () (Eventtostage);) / * * * Stvaranje stavki zaslona * * @param e događaj dodan Scena * / privatna funkcija dodavanjaTtostage (e: događaj): praznina (događaj. Dodao_to_stage, dodatnaTtaya); GameContainer \u003d New Sprite (); // Adchchild kontejner (GameContainer); Platforma \u003d nova platforma (); // stvoriti platformu koja prilagođava svoju veličinu i položaj i dodavanje platforme.Width \u003d Faza.stageWidth * .18 na scenu; platform.scaley \u003d platforma.scalex; platform.x \u003d (faza.stagewidth - platforma.Width) / 2; platform.y \u003d faza.stageheight * .88; Adhild (platforma); Recoretext \u003d Tools.generateTexfield (30, "Ocjena: 0"); // tekstualne točke bodova sreo.width \u003d faza.stagewidth / 2; recoreExt.x \u003d recokext.y \u003d 10; Addchild (rezultati); LevelText \u003d Tools.generateTextfield (30, "Razina: 1"); // Tekst polje LevelText.Width \u003d LevelText.textwidth + 4; LevelText.x \u003d (Faza.stageWidth - LevelText.Width) / 2; levelText.y \u003d faza.stageheight - LevelText.Height - 20; Addchild (LevelTstext); Menigutton \u003d Novi gumb ("MENU"); // Gumb za izlaz u glavni izbornik. Addchild (Menibutton); menubutton.Width \u003d faza.stagewith / 3.2; menabutton.scaley \u003d menabutton.scalex; menubutton.x \u003d faza.stagewidth - Menabutton.Width - 10; Menubutton.y \u003d 10; startnewvel (); // pokrenuti novu razinu mekubutton.addeventListener (touchvent.touch_tap, EXITGAME); // događaj pritiskom na izlaznu tipku u izborniku pozornice.AdDeventListener (miseevent.Mose_move, MontePlatForm); // događaj pozornosti kretanja na pozornici.AdDeventListener zaslon (miseevent.Mouse_Up, pokretPlatform); // prstima događaj iz ekrana AddEventListener (Event_Frame, Updateme); // Ažuriranje statusa igre AddEventListener (događaj.Removed_from_Stage, uklonjeno nakon toga); ) / ** * @private premještanje platforme ovisno o položaju prsta na zaslonu. * * @Param e navoj na zaslonu ili ga uklanjanje sa zaslona * / privatne funkcije MOMEPLatForm (E: Vjesti): Void (EF (miša\u003e Mynubutton.y + Menabutton.Height) tweenlite.to (platforma, .36, (X: mišax + -platform.width / 2));) / ** * @private lansiranje nove razine. Svaka se razina sastoji od 20 atems * / privatnih funkcija Startnewlevewleve (): Void (VAR interval: UINT \u003d 2300; // Ako interval timera poziva (2300 - struje * 350< 250) { // чем выше уровень, тем меньше интервал interval = 350; } else { interval = 2300 - currentLevel * 350; } gameTimer = new Timer(interval, 20); // создаём и запускаем таймер. gameTimer.start(); gameTimer.addEventListener(TimerEvent.TIMER, addItem); gameTimer.addEventListener(TimerEvent.TIMER_COMPLETE, cicleEnd); } /** * @private Создаём новый айтем по таймеру * * @param e событие тика таймера */ private function addItem(e:TimerEvent):void { var randomRange:Number = Math.random(); // случайное значене var itemType:String = ItemType.GOOD; // тип нового айтема. по умолчнанию все айтемы обычные if (randomRange > 0,65 && randumange.< .95) { // если случайное значение в заданном диапазоне (30%)... itemType = ItemType.EVIL; // айтем злой } else if (randomRange >\u003d .95) (// 5% aleta omogućuje im "ojačani" itemType \u003d imemtype.y_good;) var stavka: stavka \u003d nova stavka (itemtType); // stvoriti novu slučajnost s generiranom stavkom.x \u003d faza.StageWidth * math.random (); // staviti na slučajno .x artikl.y \u003d -Item.height; // a p.y.speed \u003d tekućine + 1 biti uklonjen izvan scene scene. // stavka brzina gamecotainer.addchild (stavka); // i dodajte ga na scenu) / ** * @private kada je tajmer diplomirao na poslu, očistite ga, što nije potrebno i pokrenuti novu razinu * * @param e događaja događaja * / privatna funkcija Cilenda (E: Timerevent): Void (Gametimer.removeeventListener (Timerent.Timer, AdyTem); Gametimer.removeeventListener (TimerVent.timer_Complete, Cilerend); Gametimer \u003d null; // Obriši slušati shemerel ++ timera; // povećanje Razina po jedinici LevelText.Text \u003d "Razina:" + niz (tekućine + 1); // ažurirati tekst razine LevelText.Width \u003d LevelText.textwidth +4; Startnewvel (); // pokrenuti novu razinu) / ** * @Private Ciklus igre * Ažuriramo položaj atems. Ako su otišli izvan scene, izbrišite. * Vratite ih sudare s platformom * * @param e enterframe događaj * / privatna funkcija updatemame (e: događaj): praznina (// u ciklusu prolazimo kroz sadržaj kontejnera za igru, osim za platformu (i \u003d 1 ) za (var i: int \u003d 1; ja< gameContainer.numChildren; i++) { var tempItem:Item = gameContainer.getChildAt(i) as Item; // берём айтем tempItem.y += (tempItem.speed * 3) * .8; // увеличиваем его.y координаты в зависимости от его скорости. if (tempItem.y > Faza.stageheight) (// Ako je otišao scene ... GameContainer.removechad (tempitem); // ... uklonite ga ... ako (tempitem.type \u003d\u003d imemtype.good) struje currentcore--; // .. i ako se ispostavilo da je uobičajeno, oduzeti jedinicu iz naočala.) Ako (tempitem.hittestobject (platforma)) (// Ako je ATEP uhvatio platforma // ovisno o svom tipu, proizvodimo akciju . // Mislim da ništa ne objašnjava prekidač (tempitem.type) (slučajtType.good: Currentcore ++; Pauza; Slučaj stopeType.y_Good: Currentcore + \u003d 5; pauza; Slučaj itemtType.evil: currentscore--; Pauza;) // također prilikom udarca u platformu, više ne treba, izbrišemo ga s scene GameContainer.removeChecha (tempitem);)) Recoretext.text \u003d "Ocjena:" + strujecore; // Ažurirajte tekstni okvir s uputama (maxcore< currentScore) maxScore = currentScore; // записываем максимальное количество очков if (currentScore < -5) { // если количество очков меньше, чем -5.. dispatchEvent(new GameEvent(GameEvent.GAME_OVER)); //... генерируем событие проигрыша } } /** * @private генерируем событие выхода из игры * * @param e событие прикосновения к кнопке выхода в меню */ private function exitGame(e:TouchEvent):void { dispatchEvent(new GameEvent(GameEvent.EXIT_GAME)); } /** * @private удаляем все ненужные больше слушатели * * @param e событие удаления со сцены */ private function removedFromStage(e:Event):void { removeEventListener(Event.REMOVED_FROM_STAGE, removedFromStage); removeEventListener(Event.ENTER_FRAME, updateGame); stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveplatform); stage.removeEventListener(MouseEvent.MOUSE_UP, moveplatform); menuButton.removeEventListener(TouchEvent.TOUCH_TAP, exitGame); gameTimer.stop(); gameTimer.removeEventListener(TimerEvent.TIMER, addItem); gameTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, cicleEnd); } } }
Screscreen. Nakon gubitka. Prikazuje tekstni okvir s konačnim rezultatom i gumbima za povratak na izbornik i ponovite igru
Ekcini paketa (uvoz elemenata Broj postignutih točaka. * Sastoji se od teksta "Vaša ocjena:" i "Menu" i "Ponovno" gumbe * * @Author iluzor * / javna klasa screscreen proširuje Sprite (/ ** @private broj bodova za prikaz * / privatno Var rezultat: UINT; / ** tipka "MENU" * / Public VAR MUBUBTTON: / ** ponovno "Gumb * / Public VaR PonovnoButton: / ** * U konstruktoru čekamo dodavanje u pozornicu. Ovdje je potrebna pozornici za postavljanje elemenata * @param bodove broj bodova za prikaz * / javne funkcije screscreen (rezultat: UINT) (thisc.score \u003d rezultat; addEventListener (event.added_to_stage, dodatak);) / ** * stvoriti tekstualni okvir za prikaz bodova i gumba za ponavljanje igre i povratak na glavni izbornik. * * @param e događaj dodaje na scenu * / privatnu funkciju ATPLOSTAG E (e: događaj): praznina (događaj.addded_to_Stage, dodatak); // Tekst polje će prikazati broj var Sprect bodova birani: Textfield \u003d Tools.generateTextfield (40, "Vaš rezultat:" + rezultat); Scorext.x \u003d (Faza.stageWidth - Recotext.Width) / 2; Recorexext.y \u003d (faza.stageheight - SPREEText.Height) / 2 - Faza.stageMeight / 6; Addchild (rezultati); // gumb za izlaz iz Mynubutton \u003d Novi gumb ("MENU"); Addchild (Menibutton); Menubutton.Width \u003d faza.stagewidth / 2; menabutton.scaley \u003d menabutton.scalex; Menabutton.x \u003d (faza.stagewidth - Menubutton.Width) / 2; menubutton.y \u003d smanjenje + rezultati + 30; // "Reproduciraj više" ponovnoumton \u003d novi gumb ("ponovno"); Adchild (opetbutton); opetbutton.Width \u003d faza.stagewith / 2; opetbutton.scaley \u003d opetbabutton.scalex; opetbutton.x \u003d (faza.stagewidth - opetbabutton.Width) / 2; opetButton.y \u003d Menubutton.y + Menabutton.Height + 30; )))))))))
I zadnje klase Glavni. Iz korijena. Glavna igra klase. Koristi se za uključivanje zaslona i čišćenje s tim smjenama. Poslušaju gumbe zaslona za tisak i događaje igre. Ovisno o njima briše scenu i prikazuje željeni zaslon.
Paket (uvoz konstantis.screntype; uvoz događaje.GameEvent; Uvoz Flash.deSktop.nativeapplication; Uvoz Flash.display.Sprite; uvoz Flash.display.Stagealign; Uvoz Flash.display.Stagescalemode; Uvoz Flash.events.events.events.events.events.events.events. Events.Toulets.Toulets; Uvoz Flash.ultitouch; uvoz Flash.ui.multitouchenputMode; uvoz ekrana; uvoz ekrana; uvoz ekrana. Uvoz ekrana; uvoz ekrana; / ** * osnovna igra klase. Upravlja prikaz različitih ekrana igara. * Igra predstavlja sljedeće: Na dnu zaslona je "platforma", koja se može premjestiti. * Od gore navedenih "objekata" od tri vrste: crvena, zelena, plava. Morate uhvatiti njihovu platformu. * * FlashDevelop 4.0.1 i Flex SDK 4.6 * Uz korištenje biblioteke iz Greensock - http://www.greensock.com/v11/ * * @author iluzor * @version 0.6 * / Javna klasa Glavno proširuje Sprite (/ ** @Private Glavni zaslon izbornika * / privatni var menocrsak: mainmenu; / ** @private igra zaslon * / Privatni Var Gamescreen: Gamescreen; / ** @Private zaslon zaslona igre (lopore naočale) * / privatni var screscreen: screscreen; / ** @Private ove varijabilne pohranjuje tekstualne vrijednosti tipa zaslona * iz konstants.Screntype, koji se trenutno prikazuje * potreban za čišćenje Corre od slušatelja i objekata na zaslonu * / privatni var struje zaslona: niz; / ** * glavni dizajner * / javna funkcija glavna (): praznina (faza.scalemode \u003d stazecalemode.no_scale; faza.Align \u003d Sernign.Top_left; // događaj deaktivacija aplikacije. to jest, izlazi iz njega ili preklapanje (Nag "Home Button" "ili" natrag ") faza.AdDeventListener (event.deactivate, deaktivirajte); \u200b\u200b// tip ulaza. Touch_point je postavljen prema zadanim postavkama i to nam odgovara multitouch.inputmode \u003d multitouchinputmode.touch_point; showmenu (); / Prikaži glavnog izbornika.) / ** * @Private Prikaži glavni izbornik * / privatni fond showmenu (): prazni (currentscreen \u003d screeny.main_menu; // nanesite tipovi zaslona Menuscreen \u003d Novi Mainmenu (); Izbornik i dodajte ga na Adchild sceni (menocrsran); menoscreen.playButton.addeventListener (Touchevent.Touch_tap, StartGame); // Dodaj slušalice na tipke MENUSCREEN.EXITBUTTON.AdDeventListener (ToucTent.touch_tap, deaktivirati);) / ** * @Private Prikaži zaslon igre * * @param e događaj Dodirnite na gumb PlayB Utton Glavni izbornik * / Privatna funkcija StartGame (e: Touchevent): praznina (jasno (); // Clean Currentscreen \u003d Screntialype. Game_Screen; // Primijenite vrstu zaslona gameskreen \u003d nova Gamescreen (); // stvoriti zaslon za igru \u200b\u200bi dodati adhild (Gamescreen) na pozornicu; Gamescreen.addeventListener (GameEvent.exit_game, Exitgame); // događaj izlaz iz igre na GAMESCREEN.AdDeventListener gumb (GameEEvent.game_Over, GameOver); // Gubitak događaj) / ** * @Private izlaz iz igre pritiskom na tipku * * @param e izlaz iz igre iz igre * / privatne funkcije EXITGAME (E: GameEEVEnt): Void (Clear (); // Clean Showmenu (). Maksimalno; Screscreen); screscreen.menubutton. AddEventListener (Touchevent.Touch_tap, EXITSCORE); // slušatelji screscreen.againbutton.adDeventListener Rezultati zaslona zaslona (Touchevent.Touch_tap, StartGame);) / ** * @private izlaz s rezultati zaslona na gumb , * Morate učiniti isto kao i kad pritisnete izlaznu tipku iz igre, tako jednostavno nazovite ExitGame () * * @param e događaj Dodirnite na izlazni gumb na zaslonu rezultata * / Privatni fond ExitScore (E: Touchevent): Void (Exitgame (null);) / ** * @private čišćenje od nepotrebnih slušatelja i objekata na zaslonu * ovisno o trenutnom zaslonu. * / Privatna funkcija Clear (): praznina (prekidač (struje (struja) (Slučaj zaslon. ; Menuscreen \u003d null; pauza; Slučaj Scortenype.Game_screen: Gamescreen.removeeventListener (GameEEVent.exit_game, EXITGAME); Gamescreen.removeeventListener (GameEEVent.game_over, GameEGENG (Gamescreen); Gamescreen \u003d null; Slučaj; Screscreen.menubutton.remeveeventListener (Touchevent.Touch_tap, EXITSCORE); Screscreen.againButton.RemoveeventListener (Touchevent.Touch_tap, StartGame); RemoveCHEEN \u003d NULL; BREAL;) / ** * Izlaz iz prijave * Klikom na "Home" ili "Natrag" aplikacija se zatvara * * @param e deaktiving događaj * / privatna funkcija deaktivirati (e: događaj): praznina (NativeApplication.nativeAplication.e Xit (); )))))))))

Kompilacija i lansiranje.

Projekt je konfiguriran, grafika je nacrtan, kod je napisan. Sve je to. Možete testirati igru. Uzimamo pametni telefon, idite Mogućnosti razvoja., upaliti USB način debug., Povezujemo ga kabel na računalo.

Sada trebate napraviti neke akcije u flashdevelop.
- dovršite projekt Projekt / Buildproject.(F8). U mapi bin. Pojavit će se flash pogon;
- Trčanje Packageapp.bat., Unesite "2", pritisnite ENTER. Čekamo do projekta u APK-u i pojavljuje se u mapi dist.;
- Odaberite u izborniku Debug / pokretanje udaljenog sesije;
- Trčanje Run.bat. - Aplikacija će popuniti uređaj, počinje tamo i povezati se s debugger.

Sve se može testirati, koristiti debugger pa čak i uhvatiti tragove ravno s uređaja. Profiler, nažalost, ne radi.

Sve ove 4 akcije mogu se napraviti na drugi način. Samo odaberite Projekt projekta / test(F5). Sve će se automatski izvršiti.

Kada je aplikacija testirana i završena, pokrenite Packageapp.bat.Uvodim jedinicu. U mapi dist. Pojavit će se APK.

Kraj prvog dijela.