AS3 101: Forgrening - Basix
en
Del
Del
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av
Dette innlegget er en del av en serie som heter AS3 101.AS3 101: Funksjoner - BasixAS3 101:. Arrays - Basix
I vår tredje utgaven av AS3 101, møter vi hjernen i drift. Alle søknader må ha minst en liten logikk innebygd, så det er det vi snakker om: forgrening Etter vår milde men likevel grundig innføring i begrepet, vil vi bruke ideene i en liten form tegning program, som kan sees nedenfor. Klikk på en av de små form knappene, deretter klikker et annet sted på scenen for å plassere den formen: Forgrening er en fellesbetegnelse gitt til konstruksjoner? i vår kode som tillater oss å ta valg og gjøre en ting, eller en annen, avhengig av en gitt tilstand. Dette er noe som kalles "flow control", fordi det kan gjøre forskjellige ting, avhengig av forholdene. Det finnes en rekke andre vilkår for dette aspektet av programmering, inkludert forholdene Tenk på forgrening som de gamle Velg ditt eget eventyr Forgrening i programmering er svært like. Du setter opp en stand og deretter enten utføre en bit av koden eller ikke, avhengig av om at vilkåret er oppfylt. Tenk deg for eksempel et skjema hvor du samle inn data fra brukeren. Naturligvis, du er en god web statsborger og ønsker å gi noen form validering å fange potensielle feil før innlevering. Når brukeren klikker på "send" -knappen, sjekke deg for å se om formen passerer validering. Hvis den gjør det, du gå videre og sende dataene. Hvis det ikke skjer, så du vise noen feilmelding. På det punktet klikke på send-knappen, kan en av to muligheter oppstå, avhengig av forholdene på det tidspunktet. Det er ikke ulikt Schrödingers katt, hvis du er kjent med det. Vi kunne avgreining i én retning, følge stien hvor dataene blir sendt, eller vi kunne avgreining i en annen retning, hvor feil blir vist. Det er helt muligens å ende opp tilbake på den grenen punkt og ta en annen vei (for eksempel, prøvde du å sende ugyldige skjemadata, fikk feil, fikset dem, deretter klikket på send-knappen igjen, denne gangen med hell). Anmeldelser De nysgjerrige kan ønske å gjøre litt lys lesing på kausalitet på Wikipedia OK, er det teknisk sett ikke det første, hvis du ' har vært å følge sammen med AS3 101-serien. Vi har kastet dem i før, men det er i stor grad fordi det er ved å impossibly å skrive et meningsfylt program (selv forenklede programmer brukes til å lære programmering konsepter) uten noen form for logikk i det. Vi kommer til å skrive ganske mye den enkleste grenen vi kan. Vi vil bruke en if setning La oss bryte det ned. Først har vi den hvis søkeordet. Dette er et reservert ord i Actionscript språket som markerer starten på en if blokk. Umiddelbart etter dette er tilstanden. Tilstanden går i mellom parenteser. Utelate parentes vil føre til en feil; Jeg tar det opp fordi jeg fortsatt noen ganger glemmer å sette dem inn! Vi skal snakke om forholdene mer i neste trinn, men for nå vil vi bare bruke ekte som vår tilstand. Etter at tilstanden er en åpning klammeparentes. Dette markerer starten på en blokk med Actionscript uttalelser som vil utføre hvis (og bare hvis) betingelsen er sann. Etter blokken av uttalelsen (e) er et avsluttende spenne, som markerer slutten av blokken. Kanskje du har lyst til å lese koden ovenfor i en mer engelsk-vennlig måte, som "hvis betingelsen er sann, deretter utføre uttalelsene mellom klammeparentes. " Eller, for å være mer spesifikk i vårt eksempel, "hvis sant er sant, så spore 'skjedde dette." Som et hypotetisk eksempel, kan man lese "hvis brukeren er logget på, så vise" Se min konto "-knappen. " Så hvis tilstanden ender opp med å være sant, så alt mellom klammeparentes blir henrettet. På den annen side, dersom betingelsen ender opp med å være falskt, så hele kodeblokken mellom klammeparentesene er hoppet over. Gå videre og kjøre denne filmen. Siden ordet sant er en ekte tilstand, så vil du se spor i utdatapanelet. Lukk filmen og endre koden slik at det ser slik ut: Kjør det igjen; fordi falsk er ikke en ekte tilstand, vil du ikke se noe skje. Blokken ble hoppet over. Hvis du ønsker å eksperimentere her, gå videre. Hvis du føler deg litt ustø på denne informasjonen, er nå en god tid til å svare på disse "hva hvis jeg gjorde dette?" spørsmål du måtte ha. Du kan prøve å sette flere uttalelser inne i hvis blokken, eller å sette uttalelser rundt blokken, for å se hva som skjer under hvilke omstendigheter Husk at tilstanden vi anvendes i trinn 2? Det er ikke mye av en tilstand. Som det står, hele hvis Du vet sikkert at det boolsk datatype er noe eget å AcionScript. En variabel som er en boolsk kan enten være true Så, er en boolsk noe som kan ha en av to verdier: sant eller usant. Noen ganger kan du tenke på disse som ja eller nei, eller 0 eller 1 (som kommer ned til hele binære aspekt av det ... men det er ikke viktig akkurat nå). Et boolsk uttrykk, da, er en hel uttrykk som behandles som en av to verdier, sanne eller falske. Wikipedia har en kort artikkel om dette emnet, som kan bli utvidet med mer i dybden diskusjon om uttrykk generelt. For å få mest mulig ut av boolske uttrykk, trenger vi å lære noen boolsk operatører Dette er trolig den mest brukte en. Den sammenligner de to verdiene på hver side og returnerer sann hvis de to verdiene er like og falske hvis de ikke er det. Dette kalles likestilling operatør Hotell og er forskjellig fra oppdrag operatør Som et eksempel, 5 == 3 ville være falsk. "Hello" == "Hello" ville være sant. Listen er ulikhet operatør Hotell og ville trolig ta andre for mest brukte sammenligning operatør. Det gjør det motsatte av likestilling operatør. Hvis de to operander har samme verdi, evaluerer det som usann. Hvis de er forskjellige, du får ekte. For eksempel 5! = 3 ville være sant. "Hello" = "Hei" ville være falsk Listen sammentallverdiene og jobber veldig mye som hva du sannsynligvis allerede vet fra enkel aritmetikk. For eksempel, uttrykket 5 > 3 er sant fordi, faktisk, er 5 større enn 3. Hvis du noensinne har gjort boolsk matte, så disse vil trolig være kjent. Begge ser på boolske verdier på hver side og returnere en boolsk verdi avhengig av kombinasjonen av verdier. og vil bare returnere true dersom begge operander er sanne. Hvis en av dem er falsk, da er hele uttrykket er usant. Det er som å si: "Hvis isen butikken er åpen, og de har ostekake iskrem i dag, så skal jeg kjøpe noen." Begge disse betingelser må være oppfylt for at resultatet skal være positive. Butikken kan være åpent, men de har ikke ostekake, så vi vil ikke kjøpe noen. Eller kanskje de hadde ostekake på lager i dag, men de stengte tidlig, så åpenbart at vi ikke kan kjøpe noe. Begge må være sant for det endelige resultatet til å være sant. Eller vil returnere true hvis minst en av operandene er sant. Det vil bare returnere false hvis begge er falske. Vi kan tenke oss et scenario hvor vi kan si: "Hvis enten lokal pizza joint ELLER bedrifts pizza-kjeden er åpne, så jeg får litt pizza til middag." I dette tilfellet, er vi ikke så diskriminerende som med iskrem sted. Vi er opp for noen form for pizza, egentlig, og så lenge en av dem er åpen, vi satt. Hvis begge er stengt, så vi er ute av lykken. Selvfølgelig kan både være åpen, men i så fall vi fortsatt ende opp med pizza. Hvilket bringer opp begrepet kortslutning Det endelige utfallet av dette er at noen ganger Action faktisk ikke evaluere hele uttrykket. For eksempel ta vår pizza sted analogi. Forestill vi kaller den lokale pizza joint og finne ut at de er stengt, så vi kaller bedriftens pizza kjeden og heldigvis de er åpne, så vi går får pizza. Hvis derimot den lokale felles var åpent da vi ringte dem først, så det er ikke nødvendig å ringe bedriftens kjeden, fordi vi vet at det er minst ett sted åpen, og det er den vi foretrekker likevel. I disse tilfellene vurderer Action "akkurat nok" av hele Uttrykket for å bestemme resultatet. Hvorfor skulle du ønske å vite dette? For optimalisering grunner. Hvis du har en eller et uttrykk og en av operandene er en enkel boolsk variabel verdi og den andre er en kompleks utsagn som involverer mange beregninger og funksjonskall, så du vil være litt bedre ved å stikke den enkle variable først i uttrykket . Hvis det er sant, så er det ingen grunn til å utføre komplekse uttalelse. Action vet dette og vil derfor helt hoppe over henrettelsen av den uttalelsen. I en forestilling kritisk applikasjon, det er den slags optimalisering du kan gjøre enkelt. Utropstegnet bare reverserer tilstanden til boolsk uttrykk til det er riktig. For eksempel: Vil føre til falsk vesen sendt til utdatapanelet Som så mange ting i programmering, er boolsk logikk faktisk. forankret i matematikk. Du husker kanskje Venn-diagrammer, sannhetstabeller og logiske porter fra noen matte klassen for lenge siden. Dette er den matematiske boolsk logikk. Wikipedia gir nok en gang videre lesning hvis du ønsker å ta en tangent La oss sette all den teorien vi nettopp har lært å bruke. La oss endre det hvis (sann) til noe litt mer realistisk: OK, så det er ikke helt realistisk, men nå har vi en sammenligning for likestilling skjer i den tilstanden. Kjør denne og du skal se sporingen. Prøv å endre enten verdien av tilstandsvariabel eller en streng som brukes i sammenligningen. For eksempel: Så, hva skjer? Vel, ganske mye det samme som før, bortsett fra at vi har en mer interessant tilstand. Vi starter med å sette verdien av en tilstandsvariabel (formodentlig for å holde styr på den nåværende tilstanden i vår søknad). Da vi traff hvis blokken og behandle uttrykket i parentesen. Hvis hele uttrykket evaluerer til sann, så vi utføre ting mellom bukseseler. Den eneste virkelige forskjellen er at vårt uttrykk er mer kompleks Men det er ikke ille.; det er bare likestilling operatør, som brukes til å sammenligne verdien av staten mot den bokstave String "foo". I det første eksemplet, det er akkurat hva staten er, så betingelsen er sann, og vi ser spor. I det andre eksemplet, er staten ikke "foo", så vi ikke ser spor La oss prøve en litt mer komplisert eksempel: Igjen har vi vår tilstandsvariabel. Vi har også en annen variabel logg, hypotetisk spore hvorvidt vi har logget Vår tilstanden er faktisk sjekker for to ting:. Første, om dagens tilstand er "foo", og også hvis vi innlogget Hvis vi kommer. kort på hver av dem, så det hele er falskt (AND-operatoren krever både til å være sant), og ingenting annet skjer. Du lurer kanskje på hvordan vi visste å sammenligne tilstanden til "foo" først og ikke sjekk for å se om "foo" OG logg er sant. Det er noe som heter operatør presedens, som fungerer mye som det samme i matematikk (de slik jeg holde bringe det opp, du tror jeg har lager i matematikk for å selge deg). For eksempel, i det matematiske uttrykket 2 + 3 * 4, multipliserer du tre av fire først, deretter legge to, fordi multiplikasjon forrang (skjer først) over tillegg. Alle disse logiske operatører vi diskutert siste trinnet har forrang også. Jeg vil ikke komme inn i en formell diskusjon om det, men du kan finne informasjon om Action operatør forrang her og her og en heller nerdete artikkel om forrang generelt på Wikipedia her. Men for nå, vi kan få mye av kjørelengde vite at & & og || har en lavere prioritet som alle andre operatører oppført i forrige trinn. Så vet vi at likestilling sammenligning vil evaluere først og resultatet av denne evalueringen vil bli brukt i og uttrykk. Hvis dette er fortsatt forvirrende, la meg si det slik: Det følgende: Vil vurdere å akkurat det samme som: Bortsett fra det tidligere nevnte kortslutning som kan skje, disse uttalelsene er nøyaktig det samme Det er nyttig å tenke på AND og OR som separatorer av former for flere forhold som alle må evalueres. De slags jobber som komma i en liste for å skille elementer Noe annet å forstå er hvordan ganske mye noen verdi, hvorvidt det er en boolsk verdi, kan brukes på steder der en boolsk forventes, for eksempel i tilstanden til en hvis setningen (men ikke tilordnet variabler datatyped som boolsk, det er ikke det jeg mener). For eksempel, tenk på dette: Kjør som tekstutdrag, og du vil se spor. Men 42 er ikke en boolsk! Hvordan gikk det skje? Vel, når vi legger til en numerisk verdi til tilstanden, er det vurderes slik: hvis tallet er 0, og deretter behandle tilstanden som falske. Andre kloke, behandle det som sant. Du kan se effekten av dette ved å bytte ut 42 med 0. Strings følge tilsvarende regler. Enhver String bortsett fra en tom streng vil være sant; en tom String vil være falsk Kjør den og igjen ser du spor. Men du prøve følgende: og du vil ikke. Den eneste forskjellen her er at vi aldri satt en verdi i sprite. I det første eksemplet, sprite hadde en verdi og derfor tilstanden ble behandlet som sann. I det andre eksemplet, vi erklært variabel, men aldri satt en verdi inn i det, slik at verdien av den variable var udefinert eller null. Når det blir satt i stand, evaluerer det som usant. Dette kan være nyttig for å sikre at et objekt har blitt initialisert før du forsøker å bruke den. For eksempel vil følgende kode forårsake en runtime error (gå videre og prøve den for å se hva jeg mener): Mens følgende gir et sikkerhetsnett: En godbit så får vi gå videre. Som nevnt tidligere, er en vanlig feil å forvirre oppdraget operatør (en enkelt likhetstegnet) med likestilling operatør (to likhetstegn). Vår tilstand som ser slik ut: Kan lett uhell skrives: Det er en subtil forskjell, og lett å lage. Men la oss se på hva som skjer når oppdraget operatør brukes her. Dette er ikke et Boolsk uttrykk per se, men som nevnt tidligere i dette trinnet, når en boolsk er forventet, hvilken verdi blir matet til den vil bli oversatt til en boolsk. Resultatet av et oppdrag operasjon er verdien blir tildelt. Det vil si at uttrykket staten = "foo" faktisk vurderer å "foo". Så, i henhold til hva vi har lært tidligere, vil en ikke-tom String vurdere å true, så i dette tilfellet betingelsen er oppfylt, og vi kjøre koden. Vi er imidlertid ikke å sjekke for å se om staten er "foo" - det kan være en annen verdi - vi er alltid tildele det til verdien "foo" og alltid kjører koden. Denne feilen fører faktisk føre til en ikke-dødelig advarsel når kompilering: "Advarsel: 1100:. Assignment innen betinget Mente du == i stedet for =?", Men SWF vil fortsatt kjøre og slett har feil logikk i det. Hvis det ikke var for kompilatoren advarselen, vil du sannsynligvis ende opp med å tilbringe flere minutter, hvis ikke timer, prøver å spore opp feilen OK, la oss gå videre! Det er så mye mer å dekke. Hvis setningen i seg selv er svært nyttig, men noen ganger vi er lurt å ikke bare kjøre noen kode hvis noe er sant, men også utføre en annen bit av koden hvis det samme noe er ikke sant. For eksempel, tilbake i trinn 1. I brukt et eksempel på et skjema sendes og enten viser feil eller sende data, avhengig av om tilstanden av inngangs er gyldig eller ikke. I dette tilfellet, ville vi ønsker å slå til hvis /annet uttalelse. Det ser ut som dette: Her introduserer vi et nytt søkeord, annet, sammen med et annet sett med klammeparentes. Dette vil trolig bli noe intuitivt på dette punktet, men hovedpunkt er at hvis betingelsen er sann, så vi utføre den første blokken (mellom det første settet med tannregulering), men hvis det betingelsen er usann, så vi kjøre den andre blokken. Det er enten /eller, vi vil aldri gå begge blokkene i et gitt gjennomføring av hele blokken Noen ganger er det mer enn to muligheter . For dette, slår vi til annet hvis. Disse går etter den første om, men før den avslutt andre (hvis det finnes). For eksempel: Og husk at den andre er fortsatt valgfritt. Vi kan ha flere stater, men bare ønsker å gjøre noen ting hvis vi er i en av to stater. Ellers trenger noe til å skje. Så kan vi enkelt gjøre dette: En mer detaljert verdt å merke seg: hvis vi hadde en kjede av annet IFS anser Action det en godt utført jobb så snart den finner du på første Jeg koser meg bukseseler, hvis bare fordi jeg liker måten som høres. Det er en dum ord som betyr at jeg setter min åpning spenne på slutten av den samme linjen som den tingen trenger seler. Du vil se to hovedvarianter, men: Som synes å være den Adobe-godkjent metode, også kalt ANSI stil. Hvis du er en cuddler, men du kan fortsatt finne det lettere å lese lange grenen blokk hvis du slipper den andre hvis eller annet ord ned på neste linje, som så: Ingen vei er riktig, men folk er som regel være veldig lidenskapelig om sine valg. Alle sider hevder at deres måte er den enkleste å lese. Men det er viktig å vite er at Action ignorerer mellomrom rundt bukseseler. Du kan gjøre dette: eller dette Det er faktisk ganske mange varianter av stiler og de har alle navn og begrunnelser. Head over til Wikipedia for en grundig diskusjon om dem. Og denne diskusjonen fører inn i nei-brace variasjon, som jeg argumentere i visse tilfeller. Hvis hele blokken skal utføres som svar på en sann tilstand er en enkelt linje, så kan du utelate klammeparentes. Mens den forrige tekstutdrag er mest fornuftig for meg (det praktisk talt leser som en engelsk setning: "Hvis staten er lik foo, spore du er på foo"), de tomme involvert er igjen ubetydelig. Du vil noen ganger se denne: Mens helt gyldig og kan gjøre for fine kompakte grener, som Problemet kommer når du alltid må legge til en ny linje. Actionscript er ikke smart nok til å bare vurdere koden mellom hvis og annet om den skulle være blokken ... det er enten koden mellom bukseseler, eller den første uttalelse etter hvis, hvis det ikke er noen bukseseler. På et tidspunkt godt etter opprinnelig å skrive koden ovenfor, vil du sannsynligvis nødt til å endre det til: som betyr å legge tannregulering. Du vil heller ikke nyte ettermontering koden med bukseseler, eller du vil glemme, og produserer noen spektakulære feil og deretter bli tvunget til å gå og ikke nyte ettermontering koden med bukseseler, uansett. Et siste notat på dette, så vi vil gå videre: husk at nei-brace regelen er for det første uttalelse etter if (eller annet), ikke den første linjen. Hvis du prøvde å stappe to uttalelser i én linje, som så: Den andre spor er ansett som en hel egen uttalelse, og vil ikke bli regnet som en del av dersom klausulen. Som tekstutdrag i seg selv vil alltid spore "som er et nydelig sted å være," uavhengig av verdien av statens Kinda høres ut som en av det 19. århundre bondesamfunnet disiplin implementere. Men de er faktisk en alternativ måte å skrive om blokker som involverer hvilken verdi en viss variabel kan holde. Det ser ut som dette: Du vil sannsynligvis få ideen uten intrikate sammenbrudd kommer opp neste, og du vil sannsynligvis se dette som en mye lettere å lese versjon av det samme . Så, la oss bryte det ned. Først er bryteren nøkkelordet. Mye som om søkeordet (eller Var eller funksjon), sparker den av hele greia. Så, liker også hvis blokk, det er et sett med parenteser. Men i stedet for å evaluere innholdet av parentesene i sann eller usann, evaluerer en bryter bare parente til sin verdi. I dette tilfellet holder tilstandsvariabel en streng og så bryteren vil "huske" denne verdien som den utfører. Da noen klammeparentes. Så langt er ingenting for bekymringsfull. Så vi får til saken søkeordet. Dette er en spesiell enhet i Action som er i bruk bare innenfor en bryter blokk, type som hvordan du kan bare bruke andre søkeord hvis det etter en hvis blokken. Umiddelbart etter at saken ordet vi har en verdi (en bokstavelig String i dette tilfellet), og hele saken er avsluttet med et kolon. Hva som skjer her er at verdien av saken ("foo" for den første) er i forhold til verdien på bryteren (uansett tilstand for øyeblikket innehar). Hvis det er en kamp, deretter koden under saken uttalelse utfører. Hvis ikke, så den hopper at kode og går videre til neste sak Standard vil kjøre hvis det ikke var noen kamp i noen av tilfellene.; det er liksom som en annen blokk Disse break uttalelser i bryteren blokken er veldig viktig. Uten dem, vil kode utfører som følge av en tilsvarende tilfelle fortsetter å bli utført. For eksempel er den følgende kode en variant av det siste eksemplet, bortsett fra uten pause uttalelser. Stille tilstandsvariabel til "foo" vil gi deg uventede resultater: Hvis du kjører det, vil du se at du fikk alle fire spor. Hvorfor? Fordi uten pauser i det, begynner koden utførende etter den første kampen. Det spiller ingen rolle at det andre tilfellet ikke samsvarer; bryteren uttalelse i utgangspunktet sier: "OK, jeg fant kamp. Jeg skal begynne å utføre all kode som ikke er en case Du tenker kanskje at det er fryktelig upraktisk og i sannhet kan det være. 9 ganger av 10, vil du skrive bryter uttalelser med en bryte Men dette problemet kan faktisk være ganske nyttig når du griper den fleksibiliteten det kan føre til. Tenk deg at du ønsket å fortelle . Hvis et nummer var en del av Fibonacci-sekvensen Det er sikkert bedre måter å gjøre dette, men følgende eksempel illustrerer en bruk av en sak uten pause: Du kan se at bryteren versjonen er lettere å lese og enda enklere å endre Hva er best, en if setning eller en bryter uttalelse? Vel, egentlig, til slutt, kommer det ned til hva du foretrekker. Noen ganger, men det er scenarier når man kan være mer praktisk enn den andre. Bytt uttalelser skinne når alt du gjør er å sjekke hva den nåværende verdien av noen variable er, spesielt hvis det er en situasjon hvor du gjøre én ting for en verdi, en annen ting for en annen verdi og en tredje ting for en tredje verdi, etc. Hvis uttalelser gi mer fleksibilitet. Man kan teste for verdien av en variabel i den første om, og deretter for verdien av en helt annen variabel i det annet hvis. Dessuten er det lettere å sette sammen en mer kompleks tilstand, for eksempel De fleste programmerere er enige om at hvis en bryter uttalelse er gjennomførbart, er det vanligvis lettere å lese Men det er ett aspekt som kan påvirke din avgjørelse i avkastnings critial applikasjoner. hvis uttalelser pleier å være raskere utøvere enn tilsvarende bryter uttalelse. Ikke av en hel masse, men det kan være nok til å gjøre animasjonen sløyfe kjøre litt jevnere. I mine tester, en bryter uttalelse, avhengig av kompleksiteten og på hvilket tidspunkt en betingelse er oppfylt, kan være opp til 20% (kanskje mer, avhengig) tregere, men husk at en enkelt gren vil bare ta en tusendel av en sekund (eller så). gå i stykker; gå i stykker; gå i stykker; Takk for lesing!
. Vi møtes hvis setningen, bryter uttalelse og en liten noe som kalles søketabellen (eller hash map).
Forhåndsvisning
Trinn 1: Hva er Forgrening
eller betinget utsagn
, logikk, eller til dagligdags hvis setningen
. Det viktigste å forstå er at forgrening er i utgangspunktet hjernen i drift, den logikken som gir programmet litt intelligens. Uten forgrening, vil du ikke være i stand til å utrette veldig mye som programmerer.
historier. Hvis du ikke husker disse, de var "game bøker" der du begynte å lese på side 1, men ble snart presentert med valg: Hvis du velger å gjøre X, slå opp på side 10. Hvis du velger å gjøre Y , gå til side 15
. Lese boken rett gjennom ville ikke være fornuftig. Du måtte gjøre dine valg og hoppe rundt boken som en litterær Leapfrog. I en gitt lesing av boken, ville du bare lese en brøkdel av sidene. Hver gang du har nådd slutten av et avsnitt, ville du gren
av på enten en eller bane annen. Se Wikipedias side på Velg ditt eget eventyr
bøker for mer informasjon.
Trinn 2:. Din første Branch
if (true) {trace ("Dette skjedde.");}.
if (false) {trace ("Dette skjedde.");}
Trinn 3:. Boolske uttrykk
strukturen er bare en formalitet, fordi vi bruker den boolske bokstavelig true
, noe som betyr at blokken alltid kjører. Naturligvis er det første eksempel på en over forenklet versjon. For å gjøre bruk av forholdene, må vi bli kjent med boolske uttrykk.
eller false
. Det er verdt å merke seg at mens vi bruker ordene sant Hotell og false
, disse er faktisk søkeord i språket. De er ikke Strings "true" og "false".
... små symbolene som jobber med verdier og evaluere dem i boolske verdier. Alle unntatt én av dem fungerer på to verdier; verdien på høyre og verdien på venstre side, å sammenligne de to. Her er en kort tabell av operatørene vil du oftest bruker:
OperatorNameIs sant ifExample == Equalityleft side er lik høyre side i value42 == 42
at du møtte i AS3 101 tutorial på variabler. Blande opp de to operatørene er veldig enkelt å gjøre, og selv etter år med programmering jeg fortsatt tidvis tabbe opp på den. Tenk deg selv advart (vi skal snakke om dette igjen snart).
OperatorNameIs sant ifExample! = Inequalityleft side ikke er lik høyre side i value42! = 5
OperatorNameIs sant ifExample (s). ≪ Mindre thanleft side er tallmessig mindre enn høyre side5 < 42 < = Mindre enn eller lik toleft side er tallmessig mindre enn, eller lik, rett side5 < = 42
42 < = 42 > Greater thanleft side er tallmessig større enn høyre side42 > 5 > = Større enn eller lik toleft side er tallmessig større enn, eller lik, rett side42 > = 5
42 > = 42
OperatorNameIs sant ifExample & & Logisk ANDleft side er sant og høyre side er true42 == 42 & & 5 == 5 || Logisk Orat minst én side er true5 == 5 || 42 == 5
en boolsk uttrykk. Legg merke til at med både AND og OR, det er 4 mulige kombinasjoner av verdier. Tre av disse verdiene vil det samme, vil man være den andre verdien.
ANDtruefalsetruetruefalsefalsefalsefalseORtruefalsetruetruetruefalsetruefalse
< p> På samme måte, hvis vi kaller iskrem butikken og de er åpne, så må vi finne ut om de har ostekake og først da vil vi gå få iskrem. Men hvis butikken er stengt, så det er egentlig ikke mye poeng av å sjekke på ostekake, fordi vi ikke kunne få den uansett.
OperatorNameIs sant ifExample! Logiske NOTreverses høyre side! (42 == 5)
Var thisIsTrue:; (! ThisIsTrue) Boolean = true spor;
Trinn 4:. Ved hjelp av en boolsk uttrykk på Tilstand
Var tilstand: String = "foo"; if (state == "foo") {trace ("Den nåværende tilstand er 'foo'");}
Var tilstand: String = "bar"; if (state == "foo") {trace ("Den nåværende tilstand er 'foo'");}
Var tilstand. String = "bar"; Var logg: boolean = true; if (state == "foo" & & logg) {trace ("Velkommen, innlogget bruker Den nåværende tilstand er 'foo'");}
if (state == "foo" & & poengsum > 100) {...
if (poengsum > 100 & & state == "foo") {...
.
Trinn 5:. Får Booleans Out of Non-boolske verdier
if (42) {trace ("Det var sant.");}
if ("a") {trace ("'a' er sant");}. if ("") {trace ("Du vil aldri komme hit".);} < p> På samme måte, noen komplekse objekt, for eksempel Arrays, Sprites og movieclips, XML og URLRequests kan vurdere å en boolsk verdi. Prøve dette ut:
Var sprite: Sprite = new Sprite (); if (sprite) {trace ("Vi har en Sprite.");}
Var sprite: Sprite, hvis (sprite) {trace (". Vi har en Sprite");}
Var sprite: Sprite; sprite.x = 100;
Var sprite: Sprite, hvis (sprite) {sprite.x = 100;}
if (state == "foo") {...
if (state = "foo") {...
Trinn 6:. If /Else Anmeldelser
if (state == "foo") {trace ("Nåværende tilstand: 'foo'");} else {trace ("Det er ikke 'foo'");}
Trinn 7:. If /Else Hvis
if (state == "foo") {} else if (state == "bar") {} else {} if (state == "foo") {} else if (state == " bar ") {} else if (state ==" fud ") {} else if (state ==" splat ") {} else {}
if (state == "foo") {} else if (state == "bar") {}
sanne tilstand. Så hvis den andre else if lykkes, så det spiller ingen rolle om det fjerde annet hvis også ville lykkes under dagens tilstand; når det andre andre hvis blokk-kode utfører, er hele blokken ferdig. For eksempel:
Var tilstand: String = "bar"; if (state == "foo") {trace ("Foo staten.");} Else if (state == "bar") {trace ("Du vil se denne sikkert ");} else if (state ==" bar ") {trace (" griser flyr ");}
Trinn 8:.. En merknad på tannregulering
if (state == "foo") {trace} else {trace}
if (state == "foo") {trace} else {trace}
if (state == "foo") {trace ("foo")} else {trace ("bar");}
if (state == "foo ") {trace (" foo ")} else {trace (" bar "); }
If (state == "foo") trace ( "Du er på foo");
if (state == "foo") trace ("Du er på foo.");
hvis (state == "foo") trace ("Du er på foo."); else if (state == "bar") trace ("Du er på bar."); else if (state == "fud ") trace (" Du er på fud "); ellers trace (". Hva er du på ");?
if (state == "foo") {trace ("Du er på foo."); spore ("Som er et herlig sted å være.");} ... osv
if (state == "foo") trace ("Du er på foo."); Trace ("Som er et herlig sted å være." );
Trinn 9:. Slå Blocks
bryteren (staten) {case "foo": trace (". Du er på foo"); gå i stykker; case "bar": trace ("Du er på bar."); gå i stykker; case "fud": trace ("Du er på fud."); gå i stykker; standard: trace ("Hva er du på");}
Trinn 10:. Ta en pause
Var tilstand: String = "foo"; bryteren (staten) {case "foo": trace ("Du er på foo."); case "bar": trace ("Du er på bar."); case "fud": trace ("Du er på fud."); standard: trace ("Hva er du på");}
eller standard
linje, før jeg ser en bryte
.
for hver tilfellet
. Det tilsvarer en serie hvis /else-if /else forhold.
Var verdi: Number = 5; switch (verdi) {case 1 : case 2: case 3: case 5: Ved 8: case 13: Ved 21: Ved 34: spor; break; standard ("En del av sekvensen."): trace ("Bare en vanlig nummer.");} < p> Ja, jeg vet at dette er begrenset til noen få hardkodet verdier og at vi kunne skrive en funksjon som beregner sekvensen i bare noen få linjer, men dette er bare et enkelt eksempel på når tilfeller uten pauser kan være nyttig. Poenget her er at tilsvarende hvis setningen vil se omtrent slik ut:
if (verdi == 1 || verdi == 2 || verdi == 3 || verdi == 5 || verdi == 8 || value = 13 || verdi == 21 || verdi == 34) {trace ("En del av sekvensen.");} else {trace ("Bare en vanlig nummer.");}
slå (stat) {case "medlem": Showet case "logget inn". showLogOutButton (); case "logget ut": showLogInButton ();}
Trinn 11: Sammenligning av Ifs og Bytter
if (verdi > 10 & & verdi < 20)