as3 101: loops

, as3 101: løkker - basix,,,,, 5,,,,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet as3 101.as3 101: arrays - basixas3 101: display - liste – basix, velkommen tilbage til as3 101, femte udgave.på dette tidspunkt, skal du være tryg med begreberne variabler, funktioner, hypoteser (sig) og systemer.ikke kun bør du være tryg med begreber, men at de også skal være flydende, hvordan actionscript 3 gennemfører disse begreber. for det femte afsnit, kan vi tilføje til det katalog af færdigheder, de forskellige strukturer i as3 skruet.du skal nok finde en afhængighed af oplysningerne har lært i as3 101, del 4, eller hvis du har sprunget en har brug for en opfyldning, tak gennemgang, som tutor inden jeg fortsætter med det, for vores endelige projekt, må vi kombinere løkker og arrays, at foretage en simpel skyde dem spil.,,,, trin 1: hvad er en sløjfe?hvis du nogensinde har slået "gentag spille" funktion på din cd - afspiller, mp3 - afspiller, eller musikproduktion software, du har oplevet en sløjfe.hvis du nogensinde har haft til at skrive linjer på kridtet bord efter skole, du har oplevet en sløjfe.hvis du nogensinde har set "kyndelmisse," du har været vidne til et loop. en sløjfe i programmeringen er en kontrol - blok, tilsvarende i det væsentlige en hvis erklæring eller en funktion, der er lidt af en kode, der ligger mellem curly bøjle, og at blokere er kontrolleret af en eller anden form for kontrol struktur.i dette tilfælde kontrol kan blokere for at blive henrettet, igen og igen, sandsynligvis med mindre variationer, indtil det er fortalt, at stoppe. der er tre slags sløjfer i actionscript,,, loop, mens, loop, og den gør, loop.der er også to andre former, der er knas, der anvendes specifikt til gennem en samling, som f.eks. et system, og kan ikke anvendes på nogen anden måde.det er for... i en sløjfe og, for hver, loop. en ting til at forstå, at de tre "standard" løkker, er, at de vil løbe for evigt, hvis du lader dem.en forkert kodet loop vil resultere i, hvad der er kendt som et uendeligt loop, på grund af som computeren vil pligtskyldigt gør hvad du fortalte det til at gøre, og det er at behandle den samme blok, igen og igen indtil udgangen af tid.heldigvis er de for, loop er svært at ødelægge (selv om det sker tit nok), og oven i det, actionscript 3 er indbygget et uendeligt loop beskyttelse.hvis det er mere end 15 sekunder, uden at de kommer op i luften, så skal du se en advarsel om, at virkningen af "et manuskript er årsag til denne film til at køre langsomt.har du lyst til at afbryde den? "hvis du ser det, mens vi arbejdede med denne forelæsning, klik på "ja", fordi der er chance for at du gjorde noget forkert, og du kan lige så godt tage lugen, der udbydes til dig.uden denne udgang, det ville bare løb og løb og løb, effektivt at låse dig ud for at røre ved flash igen, før du manuelt at opsige den (kraft op på mac, ende opgave på vinduer), og igen flash. med det sagt, løkker, er meget nyttige.faktisk er de uundværlige programmeringsredskaber.de kan tage nogle af kedsomhed ud af at oprette en masse lignende knapper.de er nødvendige for arbejdet med dynamiske data, f.eks. når et vilkårligt antal poster vil komme ind via xml.du kan behandle partikel - systemer med sløjfer.det store flertal af spil kræver anvendelse af loops.og du kan opnå en sådan logik som "giv mig et tilfældigt tal, undtagen den sidste, du gav mig" eller "bygge en snor med det foreskrevne antal pladser i det.", trin 2: for loop, den mest anvendte type loop, på alle sprog, er nok for, loop.tre af de fem loop konstruktioner bruger ord for, men en er omhandlet som blot "for loop", fordi der ikke er andre nøgleord, der er involveret i at give en.lad os skrive en enkel, loop: for (var - jeg: int = 0. jeg < 10 - + +) (spor ("hej.");}, og lad os splitte det ad.det første er, om nøgleord (ligesom så mange af vores programmer konstruktioner, det starter med et nøgleord).umiddelbart efter det er et sæt parenteser.i disse parentes er faktisk hele tre actionscript udtryk.vi vil komme tilbage til disse i en anden, men konstaterer, at der er to semikolon.disse særskilte tre udtryk.den næste er en åbning, curly skinne.vi har en kode, og et afsluttende curly skinne.den kode mellem curly seler er det, der bliver henrettet som loop - gentager. nu, de tre udtryk.de er:,, initializer, afprøvning, disken,,, initializer, er en erklæring, der løber som det første i loop.det bliver én gang, og det bliver først.i dette eksempel, den første ting, vi gør, er at skabe en variabel "jeg" og sæt den til 0.,, test, er et udtryk, der skal vurdere, sand eller falsk.tænk på det som noget, der ville være hjemme som betingelse for en, hvis udtalelse.de for, loop - bruger denne betingelse før hver udgave af processen for at se, om det fortsat skal udføre.så længe den betingelse er sandt, loop - vil fortsætte med at udføre.så snart det er falsk, vil det bryde ud af løkken.i vores eksempel, det betyder, at så længe de variable, jeg har en værdi, som er mindre end 10, vil vi fortsætte processen.skulle det så lige 10 eller mere end 10, det vil stoppe. endelig den strid, er en erklæring, som skal udføre én gang for hver udgave af loop, efter alle de kode mellem curly bøjle har henrettet.se på vores eksempel, dette er den sidste brik i puslespillet, og vi kan se, at når vi spore "hej," vi tager jeg variable og forøgelse af 1. er det nyttigt at gå gennem livet i en sløjfe i et langsomt tempo.her er, hvad der sker, skaber en variabel: "jeg", og sæt den til 0., skal de kontrollere, om den variable jeg er mindre end 10.det er i øjeblikket 0, så det er sandt, så vi... spore "hej." (jeg er nu 1. se, hvis variablen jeg er mindre end 10.det er nu 1, så det er stadig rigtigt, - - så vi... spore "hej." (jeg er nu 2., skal de kontrollere, om den variable jeg er mindre end 10.det er nu 2, så det er stadig rigtigt, - - så vi... spore "hej." (jeg er nu 3.,...og det er...lad os springe frem til, da jeg var 9, tilvækst i. jeg er nu 9., skal de kontrollere, om den variable jeg er mindre end 10.det er nu ni, så det er stadig rigtigt, - - så vi... spore "hej." (jeg er nu 10., skal de kontrollere, om den variable jeg er mindre end 10.det er nu 10...10, ikke er mindre end 10.denne betingelse er falsk, så vi forlader kredsløb, og genoptage den fuldbyrdende kode umiddelbart efter den sidste krølle skinne.,, hvis du har været holdt regnskab, så du må have bemærket, at vi har sporet "hej." ti gange.husk på, at mens vi stopper, når jeg er lig med 10, vi begynder jeg på 0, så jeg stigninger fra 0 til 9, som giver mulighed for 10 iterationer.bemærk, hvordan dette afspejler den kendsgerning, at arrays har indeks, der begynder på 0.mens du nemt kunne skrive, løkker, som starter på 42 og løb, mens jeg er på 52 – således opnå 10 iterationer – der er meget gode grunde til at sikre mig, at du prøver at stikke af fra 0.jeg er nødt til at lave en "tro mig" på denne ene, men dybest set, så længe du er konsekvent, du kan undgå en masse uventede resultater i det lange løb, løb det klip.du skulle se ti "hallo" i produktionen panel.,,, at det i sig selv er ikke særlig nyttigt.hvis jeg ville spare lidt tid, når jeg skriver efter skole ("jeg vil ikke forlade variabler untyped.jeg vil ikke forlade variabler untyped.jeg vil ikke... "), så er det fint.men næsten altid, at du ønsker at ændre, hvad der sker i hver udgave af en lille.- der må være en måde at opnå dette?der er virkelig!du ved, at variable "jeg" vi har skabt for at hjælpe med til at holde styr på det?vil du tro, at det er en variabel, præcis som enhver anden variabel i actionscript?kan du huske, selv om disse tre udtryk i parentes ser lidt anderledes ud, de er stadig kun actionscript udtryk.vi kan teknisk,, der gælder actionscript.jeg vil ikke anbefale det, i det mindste ikke for begyndere.min pointe er tværtimod, at den variable "jeg" er til rådighed for os.lad os ændre det organ, så i stedet for at spore "hej." vi sporer jeg: for (var - jeg: int = 0. jeg < 10 - + +) (spor (i)) og løb.du vil se, at vi har en liste med tal fra 0 til 9.under denne til rådighed, åbner op for en verden af muligheder, som vi begynder at udforske lidt senere, vil jeg påpege, at navnet "i" for denne slags loop er en stærk konvention, ikke kun i actionscript, men næsten alle programmeringssprog.du er fri til at anvende variable navn, du kan lide, - - men hvis du bruger bare "jeg", så vil alle vide, hvad du er ude på, hvilket er en god ting. og som en afskedsgave troede på, for løkker,, hvis du ønsker at se et uendeligt loop i aktion, prøv det her. for (var - jeg: int = 0. jeg < 10 -) (spor (i)), kan du låne, hvorfor dette loop?,, trin 3: mens og gør, er der to andre "standard" løkker, som virkelig er bare varianter af den samme idé.vi vil se på dem kort for fuldstændighed skyld. lad os se på, mens, loop.det er faktisk det centrale kredsløb konstruktion.en til, loop bliver samlet i en, mens, loop.nu og da, en, mens, loop - kan gøre noget, at en for, loop er for tung.de, mens, loop - ser sådan ud:, var jeg: int = 0, mens (< 10) (spor (i); jeg + +), og det er faktisk det samme som vores, for oplysninger fra de sidste skridt, skrevet med, mens.de, mens, loop - selv starter med nøgleordet, mens, og som omfatter curly bøjle.for det første er vores initializer, som er nødvendig for at gøre klar til det, men er ikke taget sig af automatisk, som det er med til, loop.den del af de i parentes efter nøgleord er testen.så længe det er sandt, - - vil henrette.vores loop krop består ikke kun af den ting, vi ønsker, der skal ske (spor), men også en forøgelse af den jeg variabel.igen er det nødvendigt at bruge en budgetpost til dette, selv om det for, loop - giver en bekvemmelighed for denne meget almindelig talemåde., med andre ord denne kodeks er nøjagtig den samme som for, oplysninger fra tidligere, kun med mere involverede strækninger.teknisk set er det ikke mere, kode, bare mere, linjer,., så hvorfor bruge en, mens, loop?normalt, er det, fordi vi ikke har en klar idé om, præcis hvor mange gange der skal ske.forestil dig et spil karakter bevæger sig i en bestemt retning, og det er nødt til at stoppe, når en mur blokke den vej.vi kunne måske skrive sådan:, mens (!karakter. hittest (wall)) (art. forward();},,, loop er ofte overset, fætter til, mens, loop.de er næsten identiske med to små undtagelser.i ved, loop er nøgleordet, (-)og også, og kommer efter, at krølle skinne.det ser sådan ud:, var jeg: int = 0, gøre {spor (i); jeg + +), mens (< 10); de funktionelle forskel mellem de to er, at i gør, loop, du er garanteret, at det organ vil henrette mindst én gang.i mens, loop, er det muligt, at den betingelse ikke kan opfyldes i begyndelsen, i hvilket tilfælde liget aldrig udfører. forestille sig en specialiseret nummergeneratoren.du ønsker at vælge et tilfældigt tal fra 1 til 10, hver gang en knappen er trykket, men du vil være sikker på, at antallet er ikke det samme som det sidste nummer, der blev valgt.med en, gør, at sløjfe, kan de vælge et tilfældigt tal, sammenlignes med det sidste nummer, og så gentager den proces, som det er nødvendigt.i dette tilfælde, er du nødt til at tage mindst et nyt tilfældigt tal.det kan være alt, du har brug for, men det skal ske mindst en gang.forestil dig, det var "randomnumber" har den nuværende tilfældige tal, og at denne kodeks er indeni, så at sige, en funktion, der er forbundet med knappen klikker., var lastnumber: int = randomnumber; (randomnumber = matematik. celle (matematik. random() * 10)}, mens (randomnumber = = lastnumber) denne kode skaber en midlertidig; variable "lastnumber", der oplagrer den nuværende "randomnumber" værdi.så kommer vi gør, loop.siden det er et, gør, henretter vi liget, så bekymre dig om den tilstand, så vi giver "randomnumber" en ny tilfældig værdi (med en værdi, der skabes gennem matematik. random(), som er 0 - 1, ganges med 10 og afrunding med matematik. ceil()).så checker vi den betingelse: hvis den nuværende værdi af "randomnumber" (som vi skiftede) er den samme som værdien opbevares i "lastnumber" (der var den sidste faktiske værdi af "randomnumber"), så hold skruet.prøv igen, med andre ord.så hvis "randomnumber" var 7, og første gang gennem løkken har også skabt et 7, så ville vi gå igennem det igen, før noget andet end 7 er opnået.resultatet er et tilfældigt tal, som aldrig er den samme som den sidste, vi havde, trin 4: fortsat, nogle gange er det nødvendigt at ændre de henrettelse af en sløjfe, mens vi er midt i at sløjfe.vi kan gøre to ting i et loop. det ændrer strøm af abonnentnettet, fortsat er et nøgleord, der medfører en løkke til straks at begynde at iterating igen.det kan forlade kode unexecuted i kroppen, og det er faktisk det, fortsat - af et loop.du bruger det sådan her: for (var - jeg: int = 0. jeg < 10 - + +) (spor (i); hvis jeg > 5 & & jeg < 8) (fortsat)} spor ("værdien af den, jeg er." + i)), er dette ikke et meget nyttigt eksempel, men det illustrerer anvendelse og virkninger af at fortsætte.det er typisk for, loop, med "jeg" går fra 0 til 9.den første ting i kvarteret er at spore "." ikke noget så langt.så tjekker vi, for at se, om jeg er inden for en vis afstand: over 5 og 8.hvis det er, så skal vi fortsætte.den sidste linje er endnu et spor.så mens "jeg" er 0, 1, 2, 3, 4 eller 5, vi ser to spor for hver værdi af "jeg".men så "jeg" fylder 6, som er større end 5, og mindre end 8, så fortsætter vi.derfor er denne udgave af det øjeblikkeligt stopper, og vi begynder næste udgave med "jeg" forøges, og at 7.7 også opfylder kriterierne, og vi trækker en lignende trick.i begge tilfælde, fordi vi har fortsat, før den sidste linje i kvarteret, ser vi kun en spore for disse to værdier af "jeg", løntrin 5: pause, pause, er en form for panik - knappen til loops.det vil betyde, at blot ende loop dets gennemførelse, uanset hvor sande tilstand., bryde, kan være nyttige for bygge fejlsikringer ind, mens og gøre, løkker, da disse kan være tilbøjelige til uendeligt loop.overveje, var nam: antal; gøre (nam = = matematik. random();}, mens (nam!= 0); dette gør, loop, mens det teknisk set ikke en sløjfe, sandsynligvis vil udløse manuskriptet timeout grænse inden for frembringelse, præcis, 42.vi kan bygge en sikkerhedsmekanisme, som så:, var nam: nummer var loopcounter: int = 0, gøre (nam = = matematik. random(); loopcounter +; hvis (loopcounter > 500) (pauser), mens (nam!= 0), er det en smule mere arbejde, men det sikrer, at vores loop henretter aldrig mere end 500 gange. pause er mere nyttigt end bare det.du vil måske loop gennem et system, og se til en bestemt værdi.når du finder ham, er der ingen grund til at holde scanning resten af nettet, så du kan lige så godt gå udenfor.vi vil se, at denne handling kort.,, trin 6: for hver & for i, er der to typer skruet strukturer, der er specielt konstrueret til at arbejde med samlinger som arrays.de forskellige spidsfindige måder, men god programmører ved de forskelle og ved anvendelse som. lad os antage at vi havde et system:, var mindre: array = ["en", "to", "tre", "fire", "fem"], nu kan vi... loop i dette system.det er, ved vi, at arrays implicit er samlinger af værdier.vi ønsker at tage de enkelte værdi, og gøre noget ved hver for sig.det er en fælles opgave, så det er praktisk at have to typer loop dedikeret til denne aktion., - - kan vi skrive en, for... i en sløjfe som denne: for (var - indeks: snor i område) (spor (indeks + ":" + område [indeks])), i... i, begynder med den, for nøgleord igen, men anvendelsen af den, i, nøgleord gør det anderledes end den regelmæssige, loop.det til højre for, er de ting, vi ønsker at sløjfe over (array).det til venstre for, er en variabel erklæring.denne variabel er til rådighed for loop (og andre steder i øvrigt) og indeholder for hvert iteration gennem løkken, indekset /key /navn på hvert punkt på dagsordenen, der er indeholdt i indsamlingen.i tilfælde af et system, vi får numerisk indeks.bemærk dog, at disse omregnes til strenge.,, så de variable "register" har nøglen gemt i den.det betyder, at vi kan få adgang til de faktiske værdier ved hjælp af det centrale i kantet parentes om indsamling, mindre [indeks]), for hver loops er meget ens, med en afgørende forskel, i stedet for at skabe en variabel til at holde nøglen og skabe en variabel til at holde den faktiske værdi af punkt i denne samling. for hver (var - post: snor i område) (spor (punkt)), bemærker, at datatype er snor for variablen, "post". det er også det samme som det, vi havde i... i loop.men i dette tilfælde datatype er drevet af, hvilke værdier er lagret i system.hvis vi havde dette system:, var mindre: array = [1, 2, 3, 4, 5], vores loop kan se sådan ud: for hver (var - post: int i område) (... i kroppen af loop, variable erklærede vi vil holde værdien fra indsamling hver udgave.vi er nødt til at gå gennem en lille ring for at få denne værdi i det, for... i en sløjfe.den for hver sløjfe har tendens til at være lidt renere.men du har ikke adgang til det centrale i denne cyklus, så hvis det er vigtigt, du bliver nødt til at bruge en anden type loop., for hver loops er ikke kun hurtigere til type, de er hurtigere til at udføre.så hvis denne type loop passer deres krav (dvs. du behøver ikke at kende nøglen), skal du måske foretrække,.,, trin 7: indlejrede loops, det er sikkert muligt at rede løkker, som det er muligt at skabe mangesidede arrays.det er en enkel sag at gøre, så vær sikker på, at ære de aftryk, eller det bliver meget svært at læse: for (var - jeg: int = 0. jeg < 5 - + +) (for (var - j: int = 0 j < 5. j + +) {spor (i + "," + j)), hvis du løber dette indlæg, vil du se noget lignende: 0, 0 0, 1 0, 2 0, 3 0, 4 1, 0 1, 1 1, 2 1, 3 1, 4 2, 0.osv. dette giver en matrix af værdier.i dette tilfælde, får vi alle kombinationer af 0, 0 til 4, 4. bemærker imidlertid, at det er yderst vigtigt at anvende en anden variabel for indlejrede loop.vi brugte "i" for første loop (kendt som den ydre, loop) og "j" for det andet loops (, indre, loop).hvis vi havde brugt "jeg", som vi normalt gør, ville vi med dette: 0, 0 1, 1, 2, 3, 2, 3, 4, 4, kan der kun være én variabel "jeg" på et tidspunkt, og så "jeg" når op på 5 på den indre loop og opfylder derfor de betingelse i den ydre kredsløb, som om hele tidligere end beregnet.heldigvis actionscript 3 har bygget på beskyttelse, at bidrage til, at denne fejl. det er muligt at opbygge en flerdimensional arrays sådan, var net: array = []; (var - jeg: int = 0. jeg < 5 - + +) (net [i] = []; for (var - j: int = 0 j < 5. j + +) (net [i] [j] = jeg + "," + j}}, er det også værd at bemærke, at vi kan bryde ud af (fortsat) indlejrede løkker, ved navn.hvis du bruger, bryde, i en indre loop, det bryder den nuværende (indre) loop, ikke den udvendige loop.hvis du har brug for at bryde den udvendige loop i den indre loop, du kan mærke din ydre kredsløb som denne:, outerloop: for (var - jeg: int = 0. jeg < 5 - + +) (for (var - j: int = 0 j < 5. j + +) (spor (i + "," + j); hvis (i = = 3 & & j = = 2) {bryde outerloop;}}} se første del:, etiket, tyktarm, og derefter de, til udtalelse.dette giver den ydre sløjfe en etiket, vi kan bruge, pause, og fortsætte.så i den indre cirkel på en vis vilkårlig tilstand, vi bryder ud af hele loop, med angivelse af abonnentnettet for at bryde, trin 8: ni over arrays, vi har set, hvordan man bruger den til... i, og for hver, løkker sløjfe over arrays.men det er meget almindeligt at anvende den normale, for brug, iterate over arrays.fordelene ved det er, at vi har adgang til indeks (i modsætning til hver), og vi får indeks i int form (i modsætning til i). så på det mest grundlæggende, det ser sådan ud:, var mindre: array = ["en", "to", "tre", "fire", "fem"]; (var - jeg: int = 0. jeg < ary.length; jeg + +) (spor (område [i]);}, når de gør det, er det hensigtsmæssigt at følge nogle regler for optimering.af denne simple 5-iteration loop, det er ikke noget særligt, men jeg opfordrer dem til at gøre det til en vane at altid at bruge disse ideer. først, og så op ary.length, hver gang det er tidskrævende.medmindre vi er faktisk at ændre varigheden af array i, loop, vi burde få det værdi, når, opbevarer det i en variabel, og brug den variable i kontrol:, var mindre: array = ["en", "to", "tre", "fire", "fem". og var len: int = ary.length; (var - jeg: int = 0. jeg < len; jeg + +) (spor (område [i]); den anden, sørge for, at deres numeriske datatypes match mellem dit "jeg" variable og din "len" variabel.sammenligninger er hurtigt mellem og int og en anden int, eller et nummer og et nummer, - - men hvis du laver "jeg" en int og lave "len" et nummer, er denne sammenligning er betydeligt langsommere. det tredje, når at få et punkt på dagsordenen for den vifte, sørg for at opbevare den i en variabel, som godt.som en ekstra optimering trick, erklærer den variable udenfor inderkredsen.også sætte en datatype på variabel.alt dette bliver til større hastighed ved brug af denne post ud af nettet., var mindre: array = ["en", "to", "tre", "fire", "fem"] var len: int = ary.length; var punkt: string; (var - jeg: int = 0; jeg < len; jeg + +) (punkt = område [i]; spor (punkt)}, trin 9: missionen, nu hvor vi har fået via tør teori, lad os lave noget sjovt: en enkelt skyde dem spil, baseret loosley (yderst løseligt) om den klassiske asteroider.vi bruger loops til iterate over samlinger af kugler og fjender, og udføre ramte prøver på hver.forvent ikke for meget i forhold til spil, vores formål er at anvende sløjfer i en praktisk indstilling, ikke lære knebene af spil design, en forret ned i grundlæggende kunst.som sædvanlig for as3 101 - udgaven, vi er mere interesserede i at lære at programmere og mindre i den grafiske fremstilling af et projekt.af hensyn til tiden, må vi gå ud fra, at du begyndte med ned, der er fastsat i kilden filer. en hurtig tur til fla er i rækkefølge.der er et par punkter i biblioteket, hvoraf de fleste er på scenen.der er deres skib:,, det er på det stadium, venstre, står over for.det er en instans navn, skib.skibet vil gå lodret på den spiller mus, bevægelighed, og det vil aldrig ændre sit rotation eller den vandrette position.du kan mærke, at registreringen af skibet er midtpunktet, for at gøre det lettere at holdning til mus, der er et symbol, kaldet asteroide, der repræsenterer noget for spiller kamp.,, det er ikke anbragt på scenen, men er derimod parat til brug med actionscript.du vil måske se på biblioteket, at dette symbol er et henførsel under "forbindelse".dette giver os arbejde med symbolet, og fastsætter individuelle tilfælde i kode.asteroider vil bevæge sig i en vilkårlig retning, og nå rundt om kanterne på scenen. der er et symbol, kaldet kugle:,, det er ikke på nuværende tidspunkt, men har en sammenkædning identifikator, som den asteroide symbol.kuglerne vil blive knyttet til den fase, programatically, og skyde fra deres skib mod højre.hvis der er et sammenstød mellem en kugle og en asteroide, både af dem er fjernet. dette fører til en af de tricks, der er involveret i planlægningen arrrays og loops.vi får i detaljer hurtigt nok, men hold øje med et par gotchas med vores skruet. endelig er der "du vinder!"tegn, anbringes på scenen i midten med f.eks. navn, vinde,.,, vil dette være usynlige indtil spilleren skyder alle fire asteroider, på hvilket tidspunkt i spillet vil stoppe, og dette skal anføres.,, trin 10: start - kodning som sædvanlig praksis, når vi skriver tidslinje manuskripter, skabe et nyt lag, og navn det noget som "adfærdskodeks" eller "med" og lås den.som et spørgsmål om organisation, blander aldrig din lag med kunst og kode.også, prøv at holde alle kode i en enkelt manuskript, så meget som muligt. med din lag, der er skabt, og som er udvalgt, presse, f9 (opt-f9 på mac) at indlede aktioner panel.tryk nålen ikon i bunden, for at holde det fra at miste sammenhæng, hvis du klikker på omkring anvendelse. den første ting, vi ønsker at gøre, er at sikre, at de vinder skærm er skjult.så den første del vil vi skrive:, win.visible = falske, trin 11: systemer til oplagring, den næste del af vores manuskript vil være at skabe to arrays, der vil holde alle på asteroiderne (i et system, og alle på kugler (den anden).begge systemer er tom nu.vi vil skabe kugler og asteroider, som vi har brug for dem og stikke dem i arrays.vores næste par linjer ser sådan ud:, var asteroider: array = [] var kugler: array = [], kommer vi til at udnytte disse systemer i en lille smule, så hvis du har brug for en at arrays, henvises der til min sidste forelæsning om arrays.,, trin 12: skabe asteroider. vi ved, at vi ønsker at skabe 4 asteroider, så bruger vi en enkel, mens, loop - at skabe, og sæt dem op, mens (asteroids.length < 4) (var - asteroide: movieclip = nye asteroid(); asteroide x = 450 + matematik. random() * 200 - 100; asteroide. y = matematik. random() * (stage.stageheight - asteroide. højde); addchild (asteroide); asteroider. tryk (asteroide)} her får vi et nyt eksempel på asteroiden symbol.så vi holdning det tilfældigt (vi placerer x inden for 100 pixel i 450, og y - hvor som helst i højden af fase).næste gang, vi bruger addchild(), så vi kan se det, og så det på lager på asteroiderne vifte med push., hvis den nye asteroid(), er nyt for dig, bare rolig, vi dækker display liste emner i næste as3 101 tutor. se, hvorfor det, mens det loop fungerer: løber indtil den længde af array er 4 (eller højere).og i hver udgave af den vifte, ender vi med at tilføje et punkt på dagsordenen til nettet.derfor, det er 4 gange. hvorfor har jeg brug for en, mens, loop - og ikke en, for nu?dels fordi det virkede som en renere tilgang.i den sidste ende, gør det ikke noget, men vi har ikke brug for tælleren variabel, der anvendes typisk i, løkker, kunne vi spare lidt på med, mens, loop.jeg indrømmer, det er delvist, fordi det virkede som et godt sted at anvende en, mens, loop - for resten af skyld.bare husk, at der er mere end én måde at nå det samme resultat, og den vej, du vælger, har lige så meget at gøre med personlige præferencer, som det er tilfældet med "ret" til at gøre ting - - og af den måde, er der ingen "ret" til at gøre ting i programmeringen). trin 13: skabe en informationskampagne tik, til at føre den kamp, vi bliver nødt til at gøre mange ting, hver gang det tidspunkt opdateringer på billedhastigheden.vi vil oprette en begivenhed til at lytte til enter_frame begivenhed, og det meste af vores logik i lytter funktion.for nu netop oprettet et skelet, addeventlistener (event.enter_frame, ontick); funktion ontick e: begivenhed): ugyldig (spor ("kamp...")), hvis du har lyst, kan du prøve dette for at sikre, at spore brande gentagne gange over tid.,, trin 14: flyv med ontick funktion, der er oprettet, kan vi begynde at bevæge sig rundt på tingene.vi starter med skib. vi vil ganske enkelt svarer, skibets y til mus er y:, funktion ontick e: begivenhed): ugyldig (skib. y = stage.mousey;}, anmoder den fase for y koordinere af mus.det er anderledes end at anmode en anden movieclip for mus koordinater, du får værdier i koordinere rum i movieclip, du bad om.ved hjælp af den fase, vi ved, vi er i den primære koordinere rummet., hvis du tester det nu, du skal se, at skibet bevæger sig op og ned på mus, trin 15: begynde at bevæge asteroider, vi kan sætte den asteroide forslag logik i ontick fungerer så godt, men det er en smule mere involveret.først skal vi bruge en løkke til at køre gennem asteroide - system.derefter for hver enkelt asteroiden, vi kan tilføje til eller trækkes fra) den nuværende x - og y - af et specifikt beløb.dette har den virkning, at det gradvist med hvert billede, der producerer den illusion af jævn bevægelse over tid.de følgende kode efter koden til at flytte skibet: for hver (var - asteroide: movieclip i asteroider) {asteroide x + = 3; asteroide. y + = 4;}, vi bruger, for hver sløjfe for nemheds skyld –, vi behøver ikke at kende array - indeks (og vi kan ikke, selv efter at fremlægge dette loop lidt).test den film og asteroide skal flytte, selv om deres bevægelighed er ideel, for at være sikker.asteroider normalt ikke flyve i formation, trin 16: pak asteroider omkring kanterne, i vores kamp lige nu, jorden er flad, og du forsvinder ud over kanten og aldrig komme tilbage, hvis du går for langt.lad os gøre verden rundt, så det går i én retning, betyder det, at du dukker op igen i den anden retning.vi vil gøre dette ved at kontrollere x og y for hver asteroide, efter at flytte dem.hvis de er placeret således, at hele asteroide er væk, kan vi justere x og y, så de kommer tilbage på den anden side.udfyld den, for hver sløjfe fra det sidste skridt med dette: for hver (var - asteroide: movieclip i asteroider) {asteroide x + = 3; asteroide. y + = 4; hvis (asteroide x < - asteroide. bredde) (asteroide x = stage.stagewidth;} andre, hvis (asteroide x > fase. stagewidth) {asteroide x = -asteroid.width;} hvis (asteroide. y < - asteroide. højde) {asteroide. y = stage.stageheight;} andre, hvis (asteroide. y > fase. stageheight) {asteroide. y = -asteroid.height;}}, vi fire kontrol med, hvis udtalelser.vi tjekker x hver position asteroide to gange, først til venstre kant og en gang til højre kant.så vi tjekker y stilling to gange, øverst og nederst.i alle tilfælde er vi tjekker, om den movieclip er helt ude på kanten, så sig det, så er det helt modsatte kant. for eksempel tage den første, hvis udtalelse.hvis x - værdi er mindre end 0, asteroiden er ved at gå væk fra skærmen.men det kan være delvis synlige, så vi er nødt til at kontrollere, at x er mindre end 0, minus bredden af den klippe.det er, hvis det klip er 100 pixels bredde, vi er nødt til at sikre, at den asteroide er mindst en x - 100, før det er fuldstændigt skjult, og på det tidspunkt kan vi gribe ind.kan du huske, registrering bør være i øverste venstre hjørne i magasinet, så når vi kommer til gå en asteroide, der har bevæget sig for langt til venstre, vi springer ned på scenen bredde.det er bare, til højre.men asteroiden går til venstre, og så får vi at se, det begynder at gå på scenen på den næste billede. hvis de ser på de resterende tre betingelser, vil du se et mønster af denne logik, bare prøve nu.mens de asteroider stadig er limet sammen, de mindst nå rundt om kanterne.,, skridt 17: asteroider indiv















Previous:
Next Page: