AS3 101: Arrays - Basix
en
Del
en
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:. Forgrening - BasixAS3 101: Loops - Basix
I denne utgaven av AS3 101, vi vil tilbringe hele opplæringen utforske en enkelt type data som er tilgjengelig for de fleste programmeringsspråk: Array.
Arrays finnes måter å holde verdilister. Arrays er nyttig for å holde et vilkårlig antall relaterte elementer gruppert sammen, og kan representere komplekse datastrukturer skjønt hekkende. I Actionscript, Arrays har ganske mye av fleksibilitet og funksjonalitet, så vi får se. Etter den vanlige abstrakte innføringen, vil vi bruke det vi har lært (mens også lære litt mer underveis) ved å bygge en ganske enkel oppgave lek
Trinn 1:. Så hva er en Array?
Det er litt forslitt å starte ting ut med en "New Oxford American Dictionary definerer Array som ...", men jeg kommer til å gjøre det likevel.
Som du kan se, den generelle hovedpunkt er at en matrise Wikipedias side om arrays generelt viser noen interessante anvendelser av begrepet i alle slags bransjer. Artikkelen er spesifikk for informatikk drøfter noen av de konseptuelle og lavere nivå ideer som går inn i en matrise. Min favoritt non-programmering bruken av ordet matrisen er Very Large Array, det sett av 27 antenner som danne en radio-observatoriet i New Mexico. Hvis du har sett filmen Contact, vet du hva dette er. Fra VLA offisielle nettside: VLA er et interferometer; dette betyr at den opererer ved å multiplisere dataene fra hvert par av teleskoper sammen for å danne interferensmønstre. Strukturen i disse interferensmønstre, og hvordan de endres ettersom jorden roterer, reflektere strukturen av radiokilder på himmelen: vi kan ta disse mønstrene, og bruk en matematisk teknikk som kalles Fourier transform for å lage kart I informatikk , er en rekke en samling av data, eller med andre ord, en liste med verdier. Sagt på en annen måte, er en matrise en enkelt variabel som inneholder mange verdier. Vel, teknisk sett variabelen har en enkelt verdi: matrisen selv. Da matrisen faktisk har flere verdier. Og som navnet tilsier, verdiene som er lagret i matrisen er vanligvis av samme type, men ofte er det ingen regel på dette. Hovedpoenget å vite, skjønt, er at en matrise er en gruppe av verdier, hver med sine egne individuelle verdier og identiteter, men også med en høyere, samfunnsmessige identitet, som et medlem av tabellen. Kom igjen, skrive ut et sertifikat, for dette er et spesielt øyeblikk! Hvis dette er ditt første Array, så velkommen til den fantastiske verden av data management! Det er faktisk to måter å lage Arrays, og begge disse måtene kan du lage dem med elementer i dem eller ikke. Den første måten, som en kan vurdere den offisielle måten, ser slik ut: Vi er rett og slett å lage en variabel som heter ær, av type Selv om dette er en perfekt tilstrekkelig teknikk for å skape en Array, la oss raskt se på andre måter å skape en Array Den andre hoved smaken av Array skapelsen er den hakeparentes, også kjent som rekke bokstavelig Dette kodelinje er funksjonelt identisk med kodelinje fra det siste trinnet, bare du kan se det som kortere og renere, eller som mer kryptisk. I alle unntatt ett tilfelle, er de identiske å bruke, så som du bruker er i stor grad et spørsmål om preferanser. Anbefaler jeg både å prøve ut for en stund, deretter slo seg ned på en stil og resterende konsekvent. Det er ikke noen andre syntaktiske varianter for å skape Arrays, men vi har muligheten til å skape ikke-tomme Arrays. Det vil si at vi kan skape Array og fylle den med verdier alle i samme trinn. Både ny For å gjøre det samme ved hjelp av Array bokstavelig: Merk at antall elementer spiller ingen rolle, du trenger bare å skille dem med komma. Og den type spiller ingen rolle, heller. Vi brukte Strings. Du kan bruke tall, movieclips, til og med andre Arrays (vi får til det i noen få trinn). De behøver ikke å være av samme type, enten. Det følgende er helt gyldig: ... selv om det er lite metode som galskap. Vanligvis Arrays er best egnet til å holde lister over lignende elementer, ikke gruppere sammen ulike elementer. Det er en fikser å være klar over når du oppretter Arrays med data på samme tid. Jeg nevnte litt tidligere at ny du vil få en ti-element Array, med alle elementene satt til null du vil Det er av denne liten forskjell at jeg velger den hakeparentes notasjon når du oppretter Arrays. Det er altfor lett å glemme at en sak der atferden er annerledes. Jeg har aldri funnet et behov for å skape et multi-element, alle null Etter at noen av disse eksemplene, kan du teste verdien av Array du opprettet med følgende linje:. Du vil se noe slikt som: som er Flash beste forsøk på å representere en liste over verdier som tekstlig utgang. Noen ganger fungerer det, som de ovennevnte, andre ganger er det mindre nyttig For å holde styr på alle våre varer i Array, hvert element er tildelt en numerisk indeks. Det er en "id" av former som ikke bare identifiserer den posisjonen (og verdien holdt der), men det indikerer også posisjonen som element i listen. Men før vi går videre, må vi sørge for at det er klart at Actionscript er et nullbasert Det er en vanlig feil å tenke på Arrays som one-baserte Husk at Arrays identifisere sine medlemmer ved en numerisk, null-basert indeks, la oss se på den enkleste måten å få elementer inn i en Array etter at det har blitt opprettet: Etter å ha laget en matrise med tre-String i den, tar den andre linjen som Array legger en streng inn i den fjerde posisjon (det vil si den posisjon med en indeks på 3). Bruke klammer umiddelbart etter en referanse til en Array lar oss få tilgang til en enkelt posisjon innenfor Array, som bestemmes av den numeriske verdien mellom hakeparenteser. Dette kalles rekke tilgang notasjon La oss se hva som gjorde til Array: Kjør programmet, og du skal se dette i. utdatapanelet. Du kan nå se at Array har fire elementer i det Den foregående metoden er lettest å forstå, og perfekt hvis du vet nøyaktig hvor du vil at elementet å gå. Men noen ganger du ikke vet eller ikke bryr seg, og bare ønsker å sette en verdi i Array på slutten. presse Dette tar verdien mellom parentes og stifter den på listen på slutten. Det fine er at du ikke trenger å bekymre deg for hvor lenge Array er i det øyeblikket. Du bare bruke trykk Hotell og stole på det endte opp og slutten. spore opp ær igjen og du vil se det har fem elementer nå. trykk har en liten ekstra hestekrefter at folk flest ikke synes å vite om, skjønt. Du kan bruke den til å legge til flere elementer samtidig. For eksempel: Det kan ikke være lett synlig i Utdata-panelet, men du har lagt tre individuelle elementer til listen, vokser sin lengde fra 6 til 9. Du kan legge til så mange elementer som du liker i push-metoden. avskifte er push-lillebror. Det fungerer likt, bortsett fra den lille faktum at den legger til elementer i begynnelsen av listen, i stedet for til slutt. Vær oppmerksom på at hvis du gjør dette: Vi har ikke erstattet noen elementer i Array, har vi nettopp lagt en. Den forrige element som var på indeks 0 skyves ned til indeks 1, bumping hver og en ned, før vi når slutten. Med andre ord, vi er setter Gå videre og spore Array igjen for å se denne i aksjon. Nå som vi har noen data i vår Array, vil vi sannsynligvis vil, på et tidspunkt, få det ut igjen. Det er en håndfull måter å gjøre dette, men vi vil fokusere på bare tre, som speile metoder for å få varer inn i Array vi diskutert i det siste trinnet. Array tilgang notasjon kan brukes for å få data ut like lett som å få den i Forutsatt at vi fortsatt har "ær" variable fortsatt tilgjengelig for oss, og at den har 9 elementer i det, form til "åtte," Følgende "null". vil: Du tenker kanskje på rekke tilgang notasjon som å være svært lik en enkelt variabel, bare i stedet for å ha 9 variabler med disse Strings i dem, har vi en enkelt variabel ("ær") som er i stand til å holde 9 verdier av seg selv, og å bruke en av dem som en variabel, bruker vi klammeparenteser. Dette er trolig den vanligste måten langt til tilgang til data i en Array, men to andre teknikker er vanlig også. pop Du vil se noe som dette i din utdatapanelet: I det første linje, ser vi den nåværende 9-element Array. Så i den andre linjen, vi pop det siste elementet på slutten av tabellen. Vi kan spore denne verdien ut, og se at det er faktisk den verdien som var på slutten. I den tredje linjen, vi spore hele Array igjen, og kontroller at det er faktisk mangler det siste elementet nå. shift Resultatene vil forhåpentligvis være klart på dette punktet Det er veldig vanlig å ønske å vite hvor mange elementer er i en Array. Vi kan spørre Array seg selv for sin lengde Forutsatt at vi har fulgt sammen med alle de ekstra elementer og spratt og skiftende, vi bør se Det er viktig å huske at mens indeksene av Array er nullbasert, er lengden faktisk en basert. Dette er ikke motstridende; det er en uttalelse om faktum. Vi ber Array, "hvor mange elementer har du?" ikke: "Hva er indeksen for siste elementet?" Selv om Arrays ble 42-basert, så lenge det var 7 elementer i Array (indekser 42 gjennom 48), ville lengden fortsatt være 7. Dette er ofte et poeng av forvirring blant de som er nye Arrays, så prøv å huske subtil forskjell mellom nullbasert indeks av det siste elementet og lengden på Array. Merk at en Array krever ikke at det skal være faktiske verdier i sine indekser for å telle mot lengden. Tenk: Vil gi "43", selv om 42 av de 43 elementene er ikke definert. Men vi definert et element på 42, implisitt skape tomme plasser i alt opp til at indeksen, og dermed bidra til lengden. I informatikk dette illustrerer en sparsom rekke Det finnes en rekke andre nyttige metoder kan det være lurt å gjøre til Array. Se i dokumentasjonen for en komplett liste, men her er noen høydepunkter: bli Gi det en sjanse og se hva som skjer tangentielt beslektet er komplementet String metoden, split omvendt gjør akkurat det du tror det ville gjøre. Gå videre og prøve det: Forhåpentligvis resultatene ikke overraske deg for mye sort <. br> er en fleksibel funksjon for sortering av innholdet i Array. Av seg selv, det fungerer ved å sortere i henhold til standard alphabetization regler. Igjen, gå videre og prøve det å se: Men slags I tillegg slags Skjøt Hvis du vil fjerne et element fra Array, må vi bruke spleise Vi kan også bruke spleise Dette starter med punkt 4 (verdien "fem"), sletter ingenting (det er det 0 er for), og deretter setter String gitt, presser alt ned etter en for å gjøre plass. indexOf Dette gir deg nummeret (eller, spesielt, int) 2. Dette er indeksen for det første elementet matche den medfølgende verdi. Dette er en rask måte å søke gjennom en Array for en kjent verdi, eller til å sjekke for å se om en Array inneholder verdien, ved å sammenligne resultatet av indexOf for å se om den er større enn -1 (indexOf returnerer -1 hvis verdien er ikke funnet i Array). Det er nok mer som må gjøres med Array, og selv de metodene nevnt her er ofte i stand til mer enn hva min kort beskrivelse antyder. Dokumentasjonen for Array viser alle tilgjengelige metoder og egenskaper, med minst enkle beskrivelser. Merk at i "tradisjonelle" programmerings, Arrays tendens til å faktisk være uforanderlig Array elementer kan være av hvilken som helst type. Arrays kan inneholde, faktisk, andre arrays. Disse "Arrays av Arrays" kalles nestet arrays Tenk deg et regneark, med rader og kolonner fulle av tall. Dette kan lett bli representert av en to-dimensjonal matrise. Indeksen av hoved Array (det vil si den første dimensjon) tilsvarer for eksempel raden med regnearket. Indeksen av under Array utpekt av denne første indeksen tilsvarer kolonnen. Action selv bruker todimensjonale matriser for noen operasjoner, kjent som Matrix matematikk. Den samme tanken gjelder; nummeret er lagret i et rutenett (matrisen) og forholdene mellom disse tallene har en sum effekt. Vi vil ikke være å se på dem i detalj i denne opplæringen. Vi vil ta en praktisk titt på en todimensjonal matrise med bare noen få skritt, men la oss se på hvordan disse er satt opp akkurat nå . Vi kan bygge opp en slik Array bit-for-bit: Denne prosessen er litt kjedelig, men det gjør illustrerer behovet for å være sikker på at dine "rader" blir opprettet som Arrays før du forsøker å bruke dem. For eksempel vil følgende føre til å kjøre time feil: Mens ved første øyekast ser det ut til at det skal fungere, legge merke til at regnearket [0] noen gang ble definert som en Array, så prøver å få tilgang til indekser av av som ville føre til problemer Hvis du vil gjøre denne typen satt opp, kan du være interessert i en mer konsis måte å skrive nøyaktig samme datastruktur. Denne tilnærmingen tar nytte av Array litteraler og evnen til å befolke data på tidspunktet for etableringen. Begge metodene har sine fordeler, men det vanligvis koker ned til personlige preferanser. For ytterligere lesing på multi-dimensjonale matriser, Wikipedia inntreden på Array er har et avsnitt om flerdimensjonale matriser, og for en matematisk jording, besøk oppføringen på matriser for noen lys lesing. Actionscript 3 bruker matriser i flash.geom.Matrix objektet Vector er en ny datatype innført med Flash Player 10 som er nesten identisk med en Array. Den store forskjellen er at en vektor er satt opp til å bare noensinne tillate en viss type verdi som skal inneholdt av det. For eksempel, hvis du sporer stillinger, vil du kanskje en vektor som inneholder bare tall. Of course, og Array kan inneholde bare tall, men en Vector tillater deg å håndheve det. Den beste måten å illustrere dette er ved eksempel Vi vil opprette en Array og har det holde en haug med Strings Nå, vi får det andre elementet ut Så langt så bra. Men legge merke til datatype på var "element." Dette er egentlig bare fordi jeg vet at jeg har satt noe annet enn Strings inn i Array. Hva skjer hvis jeg skrudd opp, og sette en int i det, i stedet Prøver å få ær [1] ut og sette det inn i en String-skrev variabel vil føre til problemer. Det kan være en runtime error, men du får ikke kompilatoren advarer deg om dette. Gå videre og publisere skriptet ovenfor. SWF vil kompilere uten feil, men resultatet blir ikke hva du forventer. Sprite objekt fikk omgjort til en String ved henting fra Array En Vector, er imidlertid garantert å bare ha én type objekt i den. Oppsettet ser litt merkelig i forhold til resten av Action: Dette skaper en ny vektor som bare har ventet Strings. Dont og vinkelbena er bare syntaksen for dette. Den fullstendige datatype er "Vector < Sprite >.", Der "Sprite" kan teknisk være noen annen datatype som du ønsker å lagre Nå går videre gjennom vår data oppsett, vi kan prøve dette:. Men prøv å publisere denne; vil du se at vi får en runtime error si at vi prøvde å sette et tall i en vektor som var ventet Sprites Hvis vi fikse det, men da prøve å få data ut av det slik:. Da får vi en lignende feil, men dette bør skje ved kompilering. Vi kan ikke sette noe annet enn Sprites inn i denne Vector, og vi kan ikke få noe ut av det annet enn Sprites. Hvorfor bruke vektorer enn Arrays? Hovedårsaken er for type sikkerhet. Mesteparten av tiden du bare har en enkelt datatype i din Array, så du kan like godt gjøre det offisielt. På toppen av det, skjønt, er vektorer ment å være raskere enn Arrays, spesielt for store vektorer som inneholder primitive typer som Numbers. Min følelse er at du ikke kan egentlig gå galt med en vektor, så hvis du bruker Flash Player 10, gå videre og bruke vektorer. Hvis du er bekymret for kompatibilitet med Flash 9, men du bør bruke Arrays (for eksempel i et kodebibliotek som ikke er avhengig av Flash 10 funksjoner). Fordi FlashTuts + er ikke klar til å lockout Flash 9, for resten av denne opplæringen vi skal bruke Arrays Det er på tide å begynne å sette alle av denne boken -learnin 'inn noen gate visdom. Vi kommer til å lage en enkel puslespill, som vil være stort sett umulig å kontrollere uten hjelp av matriser. Du har sikkert sett denne type oppgave før. Det er et rutenett av knapper, hver i enten en på eller av staten. Når du trykker på en knapp, slår den sin tilstand. Men ikke bare sin egen stat; de fire knappene som er nærmeste naboer til trykket knappen vil også veksle. Målet er å slå av (eller på, avhengig av hvordan du ser på det) alle knappene. Det er enklere å bare spille det selv heller enn å forklare på med ordene: For enkelthets skyld er en nedlasting tilgjengelig som gir en starer FLA, med kunstverk og andre grunnleggende behov tatt vare på, slik at vi kan få rett til Actionscript. Den neste fire trinn detalj hva som går inn i denne FLA bør du ønsker å starte fra scratch, eller hvis du bare nysgjerrig på hva som allerede er der (som du bør være) Opprett en ny Actionscript 3 Flash dokument. Sørg for å lagre det, og satte scenen dimensjonene 600 x 400. Jeg satt opp et bakgrunnslaget med et rektangel i det med en brun gradient fyll Dobbeltklikk på den nylig opprettede MovieClip å legge inn sin tidslinje. Forlenge tidslinjen til 9 rammer. Avhengig av hva slags overgang du vil ha, og hvilken versjon av Flash du bruker, vil du ha en annen tilnærming til å lage selve animasjonen. Jeg lar det være opp til leseren å sortere ut dette - i mitt tilfelle jeg laget en form tween og animerte graderingen. Men det som faktisk skjer, er målet at på rammer 1 og 9 vil vi ha en "normal" tilstand og på ramme 5 vil vi ha en "off" tilstand, med en kort og konsis overgang mellom de to statene. På et nytt lag, plasserer en "tradisjonell" keyframe på rammer 1 og 5, og legg en enkel "stop ()" script på disse rammene. Tanken er at vi skal kontrollere animasjon fra uendelige looping. Det bør starte på ramme 1 og vente, og når vi skrive litt mer logikk, vil vi fortelle klippet for å spille, noe som vil la animasjonen spillet før den treffer ramme 5, og igjen på vei tilbake. Nå for den kjedelige delen (som er grunnen til at du forhåpentligvis lastet ned starter FLA). Tilbake på hovedlinjen, kopiere denne MovieClip slik at det er 24 tilfeller av det på scenen. Ordne dem slik at de danner et rutenett med 6 kolonner og 4 rader. Start øverst til venstre kvadrat og gi den en forekomst navnet "s1". Klikk på neste firkanten til høyre og den navnet "s2", og fortsette på samme måte til du kommer til toppen høyre torget, med navnet "s6." Start tilbake på venstre side, går videre til andre rad, og navnet "S7." Fortsett på denne måten til du ender opp i nedre høyre, med navnet "s24." Merk at inkludert i nedlastingen er en JSFL script som heter "nameGrid.jsfl." Hvis du bare velger alle 24 rutene, og dobbeltklikk deretter som script, det vil kjøre, og navngi rutene for du (forhåpentligvis) Nå som vi har våre visuelle satt opp, kan vi begynne å skrive manuset. Vi starter med å lage et nytt lag på hvor koden skal ligge, klikk på rammen, og trykke F9 (Windows) /Opt-F9 (Mac). Vi får ting rullende ved å definere noen variabler. Egentlig, de to første kan være konstanter: Så skal vi sette opp to Arrays, som begge vil lagre referanser til movieclips gjør opp rutenettet. Vi vil opprette en todimensjonal matrise kalles "grid", som vi vil den fylle gjennom en smart prosessen senere. Vi vil også lage en flat list Dette ville være en fryktelig kjedelig manus hvis vi måtte sette opp musehendelsesbehandlinger og alt annet på alle 24 rutene individuelt. Heldigvis gir Array oss med en hendig foreach Vær oppmerksom på at jo mer felles tilnærming til denne situasjonen, er å bruke en sløyfestruktur. Jeg bevisst bruker denne mindre kjente og mindre brukte teknikk for to grunner. One, vil vi dekke løkker i neste AS3 101 tutorial og jeg ønsker ikke å ha for å gå i dybden av dem tidlig. To, gir dette en mulighet til å utforske videre Array Hva er det som skjer her? foreach
er en samling av ting, vanligvis de samme typer ting. rekken av litteratur, rekken av tropper, rekken av jurymedlemmene
<. p> Et interessant faktum om VLA er at rettene kan flyttes rundt i flere forskjellige konfigurasjoner, for bedre å fokusere på ulike deler av himmelen. Hver enkelt antenne er i stand til å bli beveget, og plassere seg slik at den peker på et bestemt sted. Imidlertid beveger seg og plassere en enkelt antenne i seg selv ikke har nesten den virkningen at det ville dersom antennen ble flyttet, og som ligger samtidig som den andre antenner i tankene. Det vil si, mens hver antenne er uavhengig og fullt funksjonell på egen hånd, er det antennen medlemskap til gruppen som gjør at VLA å være så kraftig som den er.
Bilde gjengitt av NRAO /AUI
Trinn 2: Opprette din aller første Array
Var ær: Array = new Array ();
Array, og sette verdien til en ny, tom Array. ny
søkeord i Action er en av dem du vil se en masse; som du kanskje antyde det skaper en frittstående noe-eller-annet, avhengig av hva som følger den. I dette tilfellet følger vi det med den type Array
, slik at vi får en ny Array.
Trinn 3:. alternative metoder for å skape Arrays
. I praksis er det bare en snarvei til nøyaktig hva vi gjorde i det siste trinnet. Det ser ut som dette (hvis du liker, åpner opp en ny AS3 Flash-dokument og deretter åpne Handlinger panelet og følge med):
Var ær: Array = [];
metode og den bokstavenotasjon støtte dette. For å opprette en ny Array med tre strenger i det ved hjelp av ny
søkeord:
Var ær: Array = new Array ("en", "to", "tre");
Var ær: Array = ["en", "to", "tre"];
Var ær: Array = ["en", 2, ny MovieClip ()];
versjon og bokstavelig
versjonen var de samme, med unntak av ett tilfelle. Så fall er dette: Hvis du prøver å opprette en ny
Array med et enkelt element i den, og at elementet skjer for å være et heltall (enten det er en int eller rett og slett et nummer som skjer for å være et heltall) , vil du ikke få et enkelt-element Array. Hvis du skriver:
Var ær: Array = new Array (10);
. Men hvis du skriver:
Var ær: Array = [10];
få et enkelt-element array, og at ett element er nummer 10.
Array, og så har jeg aldri med vilje brukt denne funksjonen. Din kjørelengde kan variere, men det er slik jeg ser det
Trace (ær);
Trinn 4:. Den Array Index
språk, noe som betyr at det første elementet i en Array har en indeks på 0 (null)
. Det andre elementet har en indeks på 1. Det siste elementet i Array vil ha en indeks på antall-of-elementer-i-Array minus 1 (tenker på det ... det vil være fornuftig hvis det ikke først ).
, spesielt når du begynner programmer karriere, noe som fører til noe som kalles en off-by-one
feil. Denne typen logisk feil kan være vanskelig å spore opp, men når du begynner å se ting som man altfor mange eller en altfor få resultater, må du kontrollere at du startet på 0.
Trinn 5: Legge elementer til en Array
Var ær: Array = ["en", "to", "tre"]; Ary [3] = "fire";
trace (ær);
metoden blir uvurderlig i disse tider:
ary.push ("fem");
ary.push ("seks", "Seven", "åtte"); trace (ær)
ary.unshift ("null");
verdier i stedet for skrive
verdier.
Trinn 6: Tilgang Elementer i en Array
spore ( ær [4]);
metoden er som fetter, eller muligens onde tvilling, av trykk
. Det fungerer i revers. Hvis fjerner det siste elementet av Array. Men mens det er å endre Array, returnerer den siste varen tilbake til deg. Tenk på følgende:
trace (ær), spor (ary.pop ()); trace (ær);
er å pop
hva avskifte
er å presse
. Det fjerner det første elementet og returnerer dem og glir de resterende elementene ned en indeks for å lukke gapet. Vi kan prøve en lignende øvelse som vi gjorde med pop Bilde:
trace (ær), spor (ary.shift ()); trace (ær);
Trinn 7:.? hvor mange elementer
. For eksempel:
trace (ary.length);
Var ær: Array = []; Ary [42] = "Førti-to", trace (ary.length);
, noe som betyr at Action Arrays ikke krever at alle verdier "tettpakket" uten null
verdier som tar opp plass. Noen språk har tette arrays
som er akkurat det, men ikke Action
Trinn 8:. Manipulere en Array
tar Array og bygger en String representasjon av det. Du kan (og sannsynligvis bør) angir delimiter plakater (det vil si String å bruke mellom hvert element). Som standard er det et komma, men ved hjelp av et linjeskift karakter kan være nyttig når du sporer Arrays:
trace (ary.join ("\\ n"));
.
. Tar en String, dele den inn i en Array, da han kom den tilbake i en String er en rask og skitne måte å utføre en enkel finn-og-erstatt:
Var tekst: String = "Regnet i Spania faller hovedsakelig på sletten. "; trace (text.split (" ain ".) bli (" AIN "));
trace (ær); ary.reverse (); trace (ær);
trace (ær); ary.sort (); trace (ær);
metoden kan bli fortalt hvordan og om hva du skal sortere. Se docs for en fullstendig beskrivelse, men for å oppsummere det er mulig å sortere numerisk (ved standardnumre er sortert alfabetisk, slik at "10" kommer før "9"), sak insensitively (som standard "Zoo" kommer før "kuleramme" ), stigende eller synkende, og med andre alternativer.
kan bruke en sammenligne funksjon, som lar deg helt tilpasse sortering logikk, og kan være svært nyttig når du har unik sortering behov. Igjen, se docs for mer informasjon, men det er nyttig nok til å fortjene omtale her.
er en Array metode som lar deg fjerne og /eller sette inn elementer fra /til Array. Det er en ganske sofistikert metode, slik at å fjerne og sette inn samtidig. La oss starte med denne grunnleggende Array:
Var ær: Array = ["en", "to", "tre", "fire", "fem", "seks"];
med to parametre: den første var indeksen på som vi ønsker å starte operasjonen, og den andre er antall elementer som skal fjernes fra startpunktet. Så for å fjerne elementet "fire" (på index 3), vil vi skrive:
ary.splice (3, 1);
å sette inn et element. For å sette inn elementet "fire-point-to" i mellom elementene "fire" og "five", kan vi gjøre følgende
ary.splice (4, 0, "tre-punkts-to");
er en enkel metode som gir deg indeksen til den angitte elementet. For eksempel:
Var ær: Array = ["en", "to", "tre"]; trace (ary.indexOf ("tre"));
. Det vil si, når de har blitt opprettet med et bestemt sett av verdier, kan de ikke være (lett) endret. Årsakene til dette involverer hukommelse tildeling og lavere nivå emner som du behandler på språk som C. Men i Actionscript, og de fleste skriptspråk, mye av dette har blitt abstrahert bort, og vi sitter igjen med Arrays som er foranderlig
, eller Arrays som kan endres på vilje. Det er ganske mye som skjer under panseret når du ringer reversere
eller spleise
, men ikke spør, bare være glad for at du har lagret en haug med tid.
Trinn 9: Nøstet Arrays
eller multi-dimensjonale arrays
. De kan da bruke til å lagre komplekse datastrukturer. Den vanligste av disse er en todimensjonal matrise, som er et enkelt Array hvor hvert element er en annen Array. Hver av disse "sub Arrays" inneholder en mer primitiv verdi.
Var regneark: Array = []; regneark [0] = []; regneark [0] [0] = "rad 0 , col 0 "; regneark [0] [1] =" rad 0, col 1 "; regneark [0] [2] =" rad 0, col 2 "; regneark [1] = []; regneark [1] [ ,,,0],0] = "rad 1, col 0"; regneark [1] [1] = "rad 1, kol 1"; regneark [1] [2] = "rad 1, kol 2"; regneark [2] = []; regneark [2] [0] = "rad 2, col 0"; regneark [2] [1] = "rad 2, col 1"; regneark [2] [2] = "rad 2, col 2"; < p> Gjør det som dette gjør for en ganske opplagt illustrasjon av hva som skjer. Det er en enkelt matrise, kalt "regneark", og i utgangspunktet tom. Vi legger en annen tomt Array som første element. Så vi begynne å fylle i den Array, som er beslektet med den første raden av et regneark. Deretter gjentar vi prosessen, for de andre og tredje seterad.
Var regneark: Array = []; regneark [0] [0] = "rad 0, col 0"; regneark [0] [1] = "rad 0 , col 1 "; regneark [0] [2] =" rad 0, col 2 ";
Div regneark: Array = [["rad 0, col 0", "rad 0, col 1", "rad 0, col 2"], ["rad 1, col 0", "rad 1, col 1", "rad 1 col 2 "], [" rad 2, col 0 "," rad 2, col 1 "," rad 2, col 2 "]];
Trinn 10:. Vektorer
Var ær: Array = new Array (); ary.push ("en.. "); ary.push (" to "); ary.push (" tre ");
Var element. String = ær [1]; trace ( item.toUpperCase ());
Var ær: Array = new Array (); ary.push ("en"); ary.push (ny Sprite ()); ær. push ("tre"); Var element: String = ær [1]; trace (item.toUpperCase ());
Var vec. Vector < Sprite > = New Vector. ≪ Sprite > ();
vec.push (ny Sprite ()); vec.push (42);
Var element: int = vec [1];
Trinn 11:. Rister
For å se denne demoen stykke, må du ha Flash Player 9 eller høyere installert, og Javascript slått på.
Trinn 12:. Opprett FLA
Trinn 13:. Lag en Grid Button
< p> På et nytt lag, tegne en firkant 99 piksler bred og 99 piksler høy. Bruk en farge som vil kontrast til bakgrunnen (jeg brukte en oransje gradient fill). Velg denne kunstverk og trykke F8 for å opprette en ny MovieClip symbol ut det
Trinn 14:. Opprett Button Transition
Trinn 15: Layout Stage
Trinn 16:. Sett opp Script
const rekker: int = 4; const kolonner: int = 6;
Array kalt "liste", som vi vil gå videre et befolke med movieclips nå:
Var grid: Array = []; Var liste: Array = [ ,,,0],s1, s2, s3, s4, s5, s6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23, S24]; < p> En flat list
er bare et begrep for konseptet med en endimensjonal Array (med andre ord, en "normal" Array). Implikasjonen er imidlertid at disse dataene er normalt best tenkt med en multi-dimensjonal struktur, men av en eller annen grunn vi presenterer det nå som en enkelt-dimensjon liste
Trinn 17:. Sett opp Hver rute
metode som vil iterere over Array for oss, og utføre de angitte handlinger på hver for seg.
list.forEach (setupSquare); funksjon setupSquare. (Firkant: MovieClip, Indeks: int, array: Array): void {square.addEventListener (MouseEvent.CLICK, onSquareClick);}
metoden tar en funksjon referanse som en parameter (mye som addEventListener
metoden). Når foreach
kalles, går Array gjennom hvert element det inneholder og kaller den spesifiserte funksjonen én gang for hvert element.