Quick Tips: Bruk FZip å åpne Zip-filer Innen AS3
en
Del
4
Share < .no> Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
I denne opplæringen vil jeg introdusere deg til FZip, en AS3 bibliotek som lar deg åpne zip-filer inni Flash prosjekter. Dette kan spare mye båndbredde; i denne opplæringen vil vi legge i en 2,5 MB zip-fil som inneholder 9.3MB verdt av eiendeler.
Endelig resultat Forhåndsvisning
La oss ta en titt på den endelige resultere vi skal jobbe mot. Klikk her for å åpne en SWF som igjen vil laste en zip-fil full av bilder, og vise dem i en flislagt rutenett.
(The uskarphet synlig på noen ikoner skyldes Flash automatisk forsøker å skalere dem opp til 32x32px, selv om de spesielle bildene er 16x16px)
Trinn 1:. Får biblioteket og Zip Arkiv
Du vil trenge å grad en kopi av FZip biblioteket fra Claus Wahlers ' github.
Pakk biblioteket. Inne i src mappen er det en mappe som heter "deng"; kopiere denne mappen til mappen hvor du vil lagre FLA.
Neste vi trenger en zip-arkiv å jobbe med. Jeg velger WooFunction ikonsettet, som er tilgjengelig gratis fra woothemes.com
Lagre dette til den samme katalogen der du vil lagre FLA
Trinn 2:.. Opprett ny Flash dokument
Åpne en ny FLA og gi den følgende egenskaper:
Størrelse: 550x400px
Bakgrunnsfarge: Hvit
Lagre dette . som fzip.fla
Trinn 3: Legg Komponenter til Stage
Gå til Vindu > Komponenter Under "Component Parametere" set følgende egenskaper:. Gi TileList forekomstnavnet imageTileList, og angi følgende egenskaper i "posisjon og størrelse" panel: < .no> Neste velg Text Tool og sørge for at følgende egenskaper er satt i "Character" panel: Nå drar en Textfield på scenen, og gi den forekomstnavnet imagesLoaded. Kontroller at Textfield er satt til "Classic Text" og "Dynamic Text", henholdsvis, og angi følgende egenskaper: Gå til Fil > . Ny Hotell og velg "Action File" Lagre denne filen som Main.as. Inside Hoved .as legge til følgende: Her har vi importert klassene vi trenger for denne opplæringen, og sette opp hoved () konstruktør funksjon Definer Følgende variabler ovenfor offentlig funksjon main (): Her legger vi noen variabler vi trenger hele opplæringen. Se kommentarene for deres bruk Legg til følgende nye funksjonen under main (): Her skaper vi en ny forekomst av FZip klassen, tilsett to hendelsen lyttere, og legger vår zip-fil. Sist, setter vi imageTileList å være usynlig (Vi vil ikke at det å vise frem alle bildene fra zip har lastet) Legg følgende nye funksjonen under setupFzip () -funksjonen du skrev ovenfor: Denne funksjonen blir kalt når zip arkivet har blitt åpnet. Her legger vi en ENTER_FRAME hendelse lytteren Legg til følgende kode ny funksjon under VedÅpning () -funksjonen du skrev inn i trinn over Denne funksjonen blir kalt når det ikke er flere filer til prosessen fra zip arkivet Legg til følgende under onComplete () -funksjonen du oppga. Denne funksjonen vil bli utløst hver ramme etter zip-filen er åpnet: Her er kjøtt av koden Siden dette er i gang hver ramme, vil vi plassere en kunstig begrensning på antall filer innenfor. arkivet som vi håndtere på en gang. Det er hensikten med for-loop zip.getFileCount () viser hvor mange filer er i zip.; numFiles butikker hvor mange filer vi har jobbet med så langt Hvis det ikke er noen filer igjen, vi hopper til linje 17 og bare gjøre noen grunnleggende clearup. Fjern ENTER_FRAME lytteren, fjerne " loading "tekstfeltet, få flis liste synlig, og koble det til dataen. Hvis det finnes filer igjen, får vi den neste i vår liste ved hjelp numFiles som en indeks. Vi sjekker da om det er en PNG fra ikoner mappe; siden vi vet strukturen i zip på forhånd, kan vi jukse og bare sjekke om filens navn og bane inneholder "woofunction-ikoner" og ".png". For å få bildet fra zip og inn i en Displayobject, kan vi bruke en Loader. Denne klassen er ofte brukt til å laste et bilde fra en URL, men her vi bruker sine loadBytes () metode for å få data fra ByteArray skapt av FZip. Siden Loader strekker Displayobject, vi kan bare legge det rett til TileList sin dataprovider. Deretter øke vi begge numFilesLoaded og numFiles. Hvorfor har vi to heltall å holde styr på hvor mange filer er lastet? Vel, holder numFiles telling av alle filene vi har undersøkt fra zip, mens numFilesLoaded holder telle spesielt av image FZIP er en utrolig liten nytte å spare lasting tid og båndbredde . Jeg håper du har funnet denne opplæringen nyttig, og takk for lesing! Anmeldelser
og dra en TileList komponent til scenen
columnWidth: 32
ROWCOUNT: 8
rowHeight: 32
X: 20
Y: 68
W: 100
H: 100
Størrelse: 50pt
Farge: Svart
X: 54
Y: 161
< li> W: 454
H: 60
Trinn 4: Lag ny AS3 Document
Trinn 5: Pakke, Import og Constructor
privat funksjon demonstrere (): voidpackage {import flash.display.MovieClip; import deng.fzip.FZip; import deng.fzip.FZipFile; import flash.display.Loader; import flash.net.URLRequest; import flash.events. *; import fl.controls.TileList; import fl.data.DataProvider; public class Hoved strekker MovieClip {offentlig funksjon main () {setupZip (); }}}
Trinn 6:. Legg Variabler
private Var zip: FZip; //Instans FZIP classprivate Var numFiles: int = 0; //Antall filesprivate Var numFilesLoaded: int = 0; //Antall filer loadedprivate Var gjort: Boolean = false; //Ferdig behandle zip-arkiv privat Var tileListDp: dataprovider = ny dataprovider (); //dataleverandøren for TileList
Trinn 7:. SetupZip ()
privat funksjon setupZip (): void {zip = new FZip (); zip.addEventListener (Event.OPEN, VedÅpning); zip.addEventListener (Event.COMPLETE, onComplete); zip.load (ny URLRequest ("wootheme.zip")); //endre dette som passer din zip-filen URL imageTileList.visible = false;}
Trinn 8:. VedÅpning ()
privat funksjon VedÅpning (evt: Hendelses): void {addEventListener (Event.ENTER_FRAME, onEnterFrame);}
Trinn 9:. OnComplete ()
privat funksjon. onComplete (evt: Hendelses): void {gjort = true;}
Trinn 10: onEnterFrame () <. br>
privat funksjon onEnterFrame (evt: Hendelses): void {//Bare last 32 filer per bilde, for å spare prosessorkraft for (var i: uint = 0; i < 32; i ++) {//noen nye filer tilgjengelig? if (zip.getFileCount () > numFiles) {//ja så får det Div file: FZipFile = zip.getFileAt (numFiles); //Dette er en png i ikoner mappen? if (file.filename.indexOf ("woofunction-ikoner") == 0 & & file.filename.indexOf () = -1 "png."!) {var dumper: Loader = new Loader (); loader.loadBytes (file.content); tileListDp.addItem ({kilde: loader}); numFilesLoaded ++; } NumFiles ++; } Else {//ingen nye filer tilgjengelig //sjekke om vi er ferdige if (ferdig) {removeEventListener (Event.ENTER_FRAME, onEnterFrame); removeChild (imagesLoaded); imageTileList.visible = true; imageTileList.dataProvider = tileListDp; } //Avslutt Loop break; }} ImagesLoaded.text = numFilesLoaded + "Bilder Loaded";}
. Så, linje 5 sjekker om det fortsatt er flere filer for å håndtere
filer som vi har lastet inn i dataprovider
. Det er den sistnevnte variabel som vi bruker til å oppdatere "loading" tekst på slutten av funksjonen.
Konklusjon