Bine ați venit în a doua parte a seriei noastre de tutorial despre construirea unui joc Hangman pentru iPad cu Flash. În timp ce primul tutorial sa concentrat în primul rând pe obținerea setărilor pentru codificarea aplicațiilor iOS cu Flash, acest tutorial se va concentra pe acțiunea ActionScript și logica jocului necesare pentru a programa de fapt hangmanul. Să începem!
În prima parte a acestei serii de tutorial am trecut prin procesul de furnizare a dispozitivului, adăugând o pictogramă de aplicație și ecranul de încărcare și cum să sincronizați aplicația cu iPad-ul în timpul dezvoltării. În această parte a tutorialului, vom termina codarea gameplay-ului.
Acest tutorial va include proiectul TweenLite, deci mergeți mai departe și apucați o copie. Odată ce ați descărcat-o, extrageți-l și adăugați folderul "com" în același folder în care se află proiectul Hangman. În final, adăugați următoarele, împreună cu restul importurilor de proiecte:
import com.greensock.TweenLite;
Selectați Instrumentul de Text, asigurați-vă că TextField nu este selectabil și că sunt setate următoarele proprietăți:
Desenați un TextField afară pe scenă și setați următoarele proprietăți:
Dați-i numele de instanță "guess_word_text".
Selectați Instrumentul Oval și asigurați-vă că sunt setate următoarele proprietăți:
Țineți "Shift" pentru a se potrivi cu ovalul unui cerc și trageți un cerc pe scenă.
Cu "Instrumentul de selecție" trageți în jurul cercului pentru a selecta atât umplerea cât și cursa. Puteți spune că ambele sunt selectate printr-un "model Hatch".
Atât umplerea, cât și cursa selectată dau cercului următoarele proprietăți:
Acum faceți clic dreapta pe cerc și alegeți "Convertire la simbol". Dați-i numele "GameButton", asigurați-vă că este bifată opțiunea "Export pentru acțiuni" și
că clasa este setată la "GameButton".
Acum faceți dublu clic pe acesta pentru a intra în modul de editare. Selectați instrumentul Text și asigurați-vă că sunt setate următoarele proprietăți:
Trageți un TextField în MovieClip și setați următoarele proprietăți:
Asigurați-vă că TextField nu este selectabil:
Dă TextField numele de instanță "game_btn_text".
Acum ștergeți cercul de pe scenă.
Mergeți la File> New și alegeți "File Actionscript". Salvați acest lucru ca "GameButton.as" în același folder ca și "Hangman.fla".
Introduceți următorul cod în "GameButton.as".
pachet import flash.text.TextField; import flash.display.MovieClip; clasa publică GameButton extinde MovieClip funcția publică GameButton () this.game_btn_text.selectable = false; this.mouseChildren = false; funcția publică setText (theText: String): void this.game_btn_text.text =Text; funcția publică getText (): String return this.game_btn_text.text; funcția publică disable (): void this.mouseEnabled = false; trace ( "YEAH");
Aici introducem clasele de care avem nevoie, setați game_button_text
pentru a nu fi selectabil, setat mouseChildren
la fals astfel încât
TextField nu poate primi Evenimente Mouse, a adăugat unele metode getter și setter pentru a seta textul pe TextField, și un dezactiva ()
funcţie
care va dezactiva butoanele de la primirea evenimentelor mouse-ului. Obțineți și setați textul pe game_btn_text
.
Deschideți "Main.as" pe care ar trebui să îl aveți la dispoziție din partea 1. Adăugați următoarele importuri în partea superioară, sub declarația pachetului:
importul flash.events.MouseEvent; import flash.net.URLRequest; import flash.net.URLLoader; importul flash.events.Event; import flash.display.Sprite;
Acestea sunt clasele de care vom avea nevoie prin acest tutorial
Introduceți codul de mai jos funcția publică se extinde pe MovieClip
:
clasa publică Extensie principală MovieClip // Folosită pentru textul de pe butoanele jocului nostru var alphabetArray = ["A", "B", "C", "D", "E", "F", "G" "," J "," K "," L "," M "," N "," O "," P "," Q "," R "," S "," T " "U", "V", "W", "X", "Y", "Z"]; // Cuvantul original var theWord: String; // presupune cuvântul var guessWord: Array; // O matrice pentru butoanele noastre de joc var gameButtonArray: Array = Array nou (); // Aceasta va conține toate cuvintele var wordList: Array; // Un Sprite desenează hangman-ul în hangman-ul de tip hangmanContainer: Sprite; // Numărul de ghiciri greșite var numWrong: int = 0;
Introduceți codul de mai jos funcție publică ()
constructor:
funcția privată setupGameButtons (): void var xPos = 150; var yPos = 600; gameButtonArray = Array nou (); pentru (var i: int = 0; iMai întâi declarăm două variabile
xPos
șiyPos
. Acestea păstrează pozițiile inițiale ale GameButtons noastre. Apoi instanțiămla o nouă matrice. Înainte vom trece prin
gameButtonArrayalphabetArray
, creând un nou GameButton. Verificăm dacăeu
este egal cu
8 sau 16, iar dacă se mărește valoareayPos
variabil cu 65, și resetațixPos
variabil la 150. Atunci verificăm dacăeu
este egal
la 24, iar dacă ne creștemyPos
de 65 și setxPos
la 330. Aceasta ne pune butoanele într-o rețea grea.Apoi creăm un
GameButton
și setați textul la litera actuală din matricea alfabetică utilizând(AlphabetArray [i])
atunci noi
setați butoanele.X
și.y
prin utilizareaxPos
șiyPos
. Apoi apăsăm butonul îngameButtonArray
adăugați-o pe scenă și adăugați un EventListener la acesta.În cele din urmă, noi creștem
xPos
de 60, astfel încât data viitoare prin buclă, butoanele vor fi eșalonate în loc de unul peste celălalt.
Pasul 21: funcția checkLetter
Introduceți codul de mai jos
setupGameButtons ()
ați creat mai sus.funcția privată checkLetter (e: MouseEvent): void var tempButton: GameButton = e.currentTarget ca GameButton; varLetter = tempButton.getText () pentru aLowerCase (); trace (theLetter);Aici am creat o
tempButton
, și ascrisoarea
care primește textul butoanelor și îl convertește la lowerCase. Apoi urmărimscrisoarea
la
panoul de ieșire.Adăugați următoarele în cadrul
funcție publică ()
.funcția publică Main () setupGameButtons ()Continuați și testați filmul și ar trebui să vedeți că butoanele de joc se aliniază frumos pe scenă, iar dacă faceți clic pe ele, litera corectă ar trebui
să fie trasată la panoul de ieșire.
Pasul 22: Încărcarea într-o listă de cuvinte
Vom încărca într-un fișier extern .txt care are cuvintele folosite în acest joc, separate de un caracter de linie nouă.
Am descarcat o lista de cuvinte din SourceForge si folosesc "varianta_1-cuvinte.95". Am redenumit-o
"Wordlist.txt".Introduceți codul de mai jos
checkLetter
funcția pe care ați creat-o mai sus.funcția doRequest (): void wordList = array nou (); var încărcător: URLLoader = nou URLLoader (); loader.load (noua adresă URLRequest ("wordlist.txt")); loader.addEventListener (Event.COMPLETE, wordListLoaded);Aici am stabilit
listă de cuvinte
la un nou Array, configurați un URLLoader, încărcați "wordlist.txt" și apoi configurați unEvent.COMPLETE
ascultător
la încărcător.
Pasul 23: Funcția wordListLoaded
Adăugați următoarele sub
doRequest
funcția pe care ați creat-o în pasul de mai sus:funcția wordListLoaded (e: Eveniment): void var tempString: String = e.target.data ca String; trace (tempString);Adăugați următoarele la
funcție publică ()
.funcția publică Main () setupGameButtons (); doRequest ();Continuați și testați din nou filmul. Ar trebui să vedeți cuvintele din "wordlist.txt" trasate la fereastra de ieșire.
Pasul 24: Crearea cuvântului Guess
Vom lua cuvântul original și vom înlocui toate personajele cu un "?". Cu toate acestea, unele dintre cuvinte conțin apostrofuri ('), deci le vom înlocui
acolo unde este cazul.Adăugați următoarele sub
wordListLoaded ()
funcția pe care ați creat-o în pasul de mai sus:funcția createGuessWord (): void guessWord = array nou (); var randomWord = Math.floor (Math.random () * cuvântList.length); theWord = wordList [randomWord]; trace (theWord); theWord = subversiunea Words (0, Word.length-1); pentru (var i: int = 0; i< theWord.length;i++) if(theWord.charAt(i) == "'") guessWord[i] ="'"; else guessWord[i]="?"; var newGuessWord = guessWord.join(""); guess_word_text.text = newGuessWord;Din moment ce șirurile sunt imuabile în AS3, vom stoca fiecare caracter într-o matrice și apoi vom transforma matricea într-un șir. Folosind o matrice putem ușor
schimba fiecare caracter individual.Primul lucru pe care îl facem este stabilit
guessWord
la o nouă matrice. Apoi am ales un element aleatoriu din partea noastrălistă de cuvinte
matrice și setcuvantul
egal cu elementul aleatoriu din lista de cuvinte, care, la rândul său, ne dă un cuvânt aleatoriu.Apoi vom folosi
subșir
pentru a elimina ultimul caracter al cuvântului. În timpul testelor am observat că cuvintele aveau un spațiu suplimentar la sfârșitul lor. Acest lucru are grijă de acel spațiu suplimentar.Apoi buclele
cuvantul
caracterul după caractere, verificați dacă caracterul curent este un apostrof (') și dacă este setat indexul curent alguessWord
array la un apostrof ('), altfel l-am pus la un "?".În cele din urmă, creăm un
newGuessWord
utilizând matricele construite îna adera
metoda care ia elementele unei matrice și le transformă
într-un șir. În cele din urmă, am setatguess_word_text
Textul TextField către noul GuessWord.
Pasul 25: Resetați jocul
resetGame ()
funcția este locul unde vom reinițializa toate elementele jocului pentru un nou joc. Deocamdată, îl folosim doar pentru a crea ghiciul și pentru a configura butoanele noastre.Introduceți codul de mai jos
createGuessWord
funcție creată în pasul de mai sus.funcția resetGame (): void setupGameButtons (); createGuessWord ();Schimbați codul înăuntru
funcție publică ()
la următoarele.funcția publică Main () doRequest ();Apoi adăugați următoarea linie la
wordListLoaded
funcţie.funcția wordListLoaded (e: Eveniment): void var tempString: String = e.target.data ca String; wordList = tempString.split ("\ n"); resetGame ();Aici adăugăm cuvintele la
listă de cuvinte
folosind arborii încorporațiDespică()
metodă, trecând "\ n" de la cuvintele noastre
sunt separate de chrakters noi, apoi sunămresetGame
funcția pe care am creat-o mai sus.Continuați și testați filmul și ar trebui să vedeți că ghiciunea a fost înlocuită cu "?" și "" "acolo unde este cazul.
Pasul 26: Desenarea containerului Hangman
Nebunul nostru este dinamic desenat folosind API-ul de desen al lui AS3. Primul lucru pe care trebuie să-l facem este să tragem containerul pentru hangman. Introduceți codul următor
subresetGame ()
funcţie:funcția privată addHangmanContainer (): void hangmanContainer = nou Sprite (); hangmanContainer.x = 180; hangmanContainer.y = 180; hangmanContainer.graphics.lineStyle (3,0x000000); hangmanContainer.graphics.drawRect (0,0,400,400); addChild (hangmanContainer);Aici am setat
hangmanContainer
la un nou Sprite, setați-l.X
și.y
proprietăți și utilizați desenul
API pentru a setatipuri de linii
la o linie neagră de 3px. Apoi tragem un dreptunghi folosinddrawRect ()
și adăugați-o pe scenă.Adăugați următoarele la
resetGame ()
funcţie:funcția resetGame (): void if (hangmanContainer! = null) removeChild (hangmanContainer); hangmanContainer = null; addHangmanContainer (); setupGameButtons (); createGuessWord ();Mai întâi verificăm să ne asigurăm
hangmanContainer
nu este egal cu nul. Dacă nu, atunci îl scoatem din scenă și l-am lăsat pe nul, apoi noi
utilizareaddHangmanContainer
pentru ao adăuga pe scenă.Testați filmul și ar trebui să vedeți containerul agățat poziționat bine deasupra butoanelor.
Pasul 27: Funcția drawHangman ()
drawHangman ()
funcția va fi utilizată pentru a desena piesele individuale de hangman în timp ce jocul progresează. Introduceți codul de mai josaddHangmanContainer ()
funcţie:funcția drawHangman (drawNum: int): void comutator (drawNum) caz 0: drawGallows (); pauză; cazul 1: drawHead (); pauză; cazul 2: drawBody (); pauză; cazul 3: drawArm1 (); pauză; cazul 4: drawArm2 (); pauză; cazul 5: drawLeg1 (); pauză; cazul 6: drawLeg2 (); pauză;Această funcție va lua un parametru int ca parametru și va folosi o instrucțiune de comutare pentru a decide ce parte a hangmanului să deseneze.
Pasul 28: funcția drawGallows ()
Următorul cod folosește API-ul pentru desen pentru a desena galajele din interiorul hangmanContainer sprite. Adăugați următoarele sub
drawHangman ()
funcţie.funcția drawGallows (): void hangmanContainer.graphics.moveTo (20,380); hangmanContainer.graphics.lineTo (360,380); hangmanContainer.graphics.moveTo (290,380); hangmanContainer.graphics.lineTo (290,50); hangmanContainer.graphics.lineTo (180,50); hangmanContainer.graphics.lineTo (180,90);Pasul 29: Funcția drawHead ()
Acest cod este folosit pentru a desena capul hangman.Adăugați codul de mai jos
drawGallows ()
funcţie.funcția drawHead (): void hangmanContainer.graphics.drawCircle (180,120,30);Pasul 30: Funcția drawBody ()
Acest cod trage corpul hangmanului. Adăugați codul următor indică
drawHead ()
funcţie:funcția drawBody (): void hangmanContainer.graphics.moveTo (180,150); hangmanContainer.graphics.lineTo (180,300);Pasul 31: Funcțiile drawArm
Aceste două funcții sunt folosite pentru a desena brațele stângi și drepte. Adăugați următoarele funcții sub
drawBody ()
funcţie:funcția drawArm1 (): void hangmanContainer.graphics.moveTo (180,200); hangmanContainer.graphics.lineTo (130,190); funcția drawArm2 (): void hangmanContainer.graphics.moveTo (180,200); hangmanContainer.graphics.lineTo (230,190)Pasul 32: Funcțiile drawLeg
Aceste două funcții sunt folosite pentru a desena picioarele stângi și drepte. Adăugați următoarele funcții sub
drawArm2 ()
funcţie.funcția drawLeg1 (): void hangmanContainer.graphics.moveTo (180,300); hangmanContainer.graphics.lineTo (130,330); hangmanContainer.graphics.lineTo (120,320); funcția drawLeg2 (): void hangmanContainer.graphics.moveTo (180,300); hangmanContainer.graphics.lineTo (230,330); hangmanContainer.graphics.lineTo (240,320);Pasul 33: Crearea Clipului pentru Clipuri câștigate
Accesați Insert> New Symbol. Dați-i numele "YouWin" și asigurați-vă că este bifată opțiunea "Export pentru ActionScript" și că clasa este setată la "YouWin"
Selectați instrumentul Text și asigurați-vă că sunt setate următoarele proprietăți:
- Dimensiune: 14pt
- Culoare: # 00FF00
Trageți un TextField în MovieClip și introduceți cuvintele "YOU WIN !!" în ea.
Apoi setați următoarele proprietăți pe TextField.
- X; -49.00
- Y: -8.00
- W: 104,00
- H: 19,00
Trebuie să creați o variabilă pentru a țineți YouWin MovieClip astfel încât să introduceți următoarele în partea de jos a declarațiilor de variabile:
var youwin: YouWin;Pasul 34: Crearea filmului de film pe care îl pierdeți
Accesați Insert> New Symbol. Dați-i numele "YouLose" și asigurați-vă că este bifată opțiunea "Export pentru ActionScript" și că clasa este setată la "YouLose".
Selectați instrumentul Text și asigurați-vă că sunt setate următoarele proprietăți.
- Dimensiune: 14pt
- Culoare: # FF0000
Trageți un TextField în filmul MovieClip și introduceți cuvintele "TREBUIEȚI!" în ea.
Setați următoarele proprietăți în TextField
- X; -49.00
- Y: -8.00
- W: 104,00
- H: 19,00
Avem nevoie de o variabilă pentru a țineți YouLose MovieClip, așa că introduceți următoarele în partea de jos a declarației dvs. de variabilă.
var youlose: YouLose;Pasul 35: disableButtons () Funcție
Adăugați următorul cod de mai jos
drawLeg2 ()
funcţie.funcția privată disableButtons (): void pentru (var i: int = 0; i < gameButtonArray.length;i++) gameButtonArray[i].disable();Acest cod pur și simplu trece prin
gameButtonArray
și dezactivează toate butoanele.Pasul 36: Verificare checklist ()
În acest pas vom termina
checkLetter ()
funcția în care se află inima jocului. Introduceți codul următor
în interiorulcheckLetter ()
pe care ați creat-o mai devreme.funcția privată checkLetter (e: MouseEvent): void var tempButton: GameButton = e.currentTarget ca GameButton; varLetter = tempButton.getText () pentru aLowerCase (); var corectGuess: Boolean = false; var newGuessWord; tempButton.removeEventListener (MouseEvent.CLICK, checkLetter); removeChild (tempButton); pentru (var i: int = 0; i
tempButton
șiscrisoarea
variabilele au fost explicate în etapele anterioare.correctGuess
este setată la
fals la început, în cazul în care utilizatorul a ales o scrisoare corectă am setat-o la adevărat.newGuessWord
este o variabilă temporară pe care o vom folosi pentru a construi noul cuvânt de afișat.Apoi, eliminăm EventListener din buton și îl scoatem din scenă.
Ne străduim
cuvantul
caracter de caracter și verificați dacă caracterul curent încuvantul
este egal cuscrisoarea
, și
dacă este, setăm litera corespunzătoare înguessWord
array lascrisoarea.
Apoi, folosim metoda de îmbinare a clasei String pentru a ne transforma
guessWord
array într-un String (newGuessWord), și setațiguess_word_text
lanewGuessWord
.Verificăm dacă
correctGuess
este falsă, iar dacă ne creștemnumWrong
și apelați funcția drawHangman care trecenumWrong
.Atunci verificăm dacă
newGuessWordM
este egal cucuvantul
și dacă este, dezactivați butoanele, instanțiați-neai castigat
MovieClip, setați-l .x
și.y
, adăugați-o pe scenă și apelați TweenLite pentru ao anima cu oonComplete
funcţie.În sfârșit, verificăm dacă
numWrong
este egal cu șase și dacă este, ne buclelecuvantul
și setați fiecare literă înguessWord
array egal cu caracterul curent dincuvantul
. Apoi utilizăm conexiunea așa cum este explicat mai sus și arată cuvântul. Dezactivați butoanele, instanțiați-neai pierdut
MovieClip,
adăugați-o pe scenă și, din nou, apelați la TweenLite pentru a anima cu unonComplete
funcţie.Pasul 37: resetTheGame () Funcția
resetTheGame ()
funcțiile sunt numite atunci când animațiile dinai castigat
șiai pierdut
MovieClips sunt terminate. Introduceți codul următor
subdrawLeg2 ()
funcţie:funcția resetTheGame (): void if (youwin! = null) removeChild (youwin); youwin = null; dacă (youlose! = null) removeChild (youlose); youlose = null; resetGame ();Această funcție verifică dacă
ai castigat
șiai pierdut
nu sunt nuli și dacă nu sunăm noiremoveChild
a sterge
ei din scena și le-au pus la zero. În cele din urmă numimresetGame
funcţie.Pasul 38: Finalizarea resetGame ()
Trebuie să facem o curățenie finală în
resetGame
funcţie. Adăugați următorul cod laresetGame ()
funcţie:resetGame (): void numWrong = 0; dacă (gameButtonArray.length> 0) pentru (var i: int = 0; iResetăm mai întâi
numWrong
la 0, apoi buclele pringameButtonArray
, verificați dacă butoanele sunt pe scenă și dacă acestea sunt
le eliminăm.Pasul 39: Adăugarea listei de cuvinte
Va trebui să includeți "wordlist.txt" în fișierele incluse. Deci, du-te la setările "AIR pentru IOS", iar în tab-ul "General" faceți clic pe butonul "+"
și navigați la "wordlist.txt" adăugându-l la fișierele incluse.Acest lucru completează jocul nostru! Următorul pas este să publicați pentru App Store și încărcați prin iTunes Connect.
Pasul 40: Pregătirea pentru App Store
Mai întâi va trebui să generați o „Distribuție“ Profilul profilului. Urmați pașii din Pasul 4 din prima parte a tutorialului, dar
asigurați-vă că sunteți sub "Distribuție" în loc de dezvoltare.Apoi va trebui să descărcați „Distribuție“ și transformați-o într-un .P12 urmând exemplul din pasul 5 din prima parte a acestei serii.
Apoi, reveniți la "Air For IOS" și sub fila "DEPLOYMENT", schimbați devoluția .P12 cu distribuția .P12 și schimbați fișierul de furnizare devloper
cu profilul distributuion, asigurați-vă că bifați "Deployment - Apple App Store" și faceți clic pe publish.În cele din urmă, conectați-vă la iTunes Connect, accesați "Gestionați aplicațiile" și adăugați o nouă aplicație, urmați instrucțiunile, încărcați aplicația cu "App Loader".
Concluzie
Această serie a dat o bună prezentare dezvoltării mobile cu Flash CS5.5. Sperăm că ați învățat ceva util și vă mulțumesc că ați citit! Dacă doriți să vedeți mai multe conținut de dezvoltare Flash CS 5.5 iOS, lăsați un comentariu mai jos!