Monitoring lasteprosessen i Flash Med Loader Class 
 Del 
 Del 
 4 
 Del 
 
 Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av. 
 
 I AS3 prosjekter, må du ofte laste eksterne eiendeler som bilder og andre SWF. Under lasting av disse ressursene du har til å holde styr på flere arrangementer for vellykket gjennomføring av programmet. Du har kanskje brukt noen av disse hendelsene som ProgressEvent, KOMPLETT hendelsen. Denne opplæringen viser deg hvordan du får info om verdiene du lasting med Loader.load (), ved hjelp av de tilhørende arrangementer, alle på ett sted. Så hvis du har problemer med å laste slike eiendeler, eller du har mindre tid i hånden for å feilsøke, ta en titt på dette. 
 
 Denne opplæringen omfatter den andre delen, så la oss se på det nå. 
 
 Som våre program laster eiendeler eksternt, er det nå avhengig av disse eiendelene. Hvis noen av våre eiendeler ikke klarer å laste for noen grunn, da hele vår søknad vil bli hemmet. For å unngå slike feil, vi må virkelig gi "Decision Making" makt til vårt program. 
 
 Her er ett eksempel. Du har en mynt-flipping spill, hvor mynten er en eksternt lastet bilde. Nå, hvis bildet ikke lastes inn, så hva blir det neste? Dette er den perfekte punktet hvor programmet vil ta litt avgjørelsen (e). Det kan legge i et annet bilde for mynten, lagret som en proxy. Det kan laste stand-by mynt hvis du har plassert den i Flash biblioteket. Dette kan være en lett sak består av vektorgrafikk og slag konvertert til å fylle for å holde størrelsen på hoved SWF så liten som mulig. Hvis du ikke har tenkt til å ha stand-by mynt, da programmet kunne varsle brukeren om svikt. 
 
 Selvfølgelig, dette var bare ett tilfelle. For en komplett spill, må du bruke en moden "Asset Management" system 
 
Trinn 2:.? Hvilken type Loader I et AS3 prosjekt
, eiendeler kan være en hvilken som helst av følgende, etter
-  Event.OPEN 
 Så snart lasting utløses, er denne hendelsen sendt. Her kan vi klargjøre en preloader (f.eks satt opp Fremskritts indikator), før PROGRESS arrangementet er sendt. Dette OPEN hendelsen er den første tingen å bli sendt ut i et (vellykket) lasteoperasjonen. 
 Denne hendelsen kommer an på laste miljøet. Betydning, hvis du legger bilder eksternt (si, over Internett, i stedet for fra brukerens harddisk) og hvis forbindelsen er i orden, men filen er ikke funnet, selv nå denne hendelsen vil bli sendt ut. Så vær forsiktig hvis du initialisere en preloader her -. Eller prøve å gjøre programmet svært strenge i å håndtere en IO_Error hendelse 
 
 ProgressEvent.PROGRESS
 Vi har fått målet og nå lasting pågår. Men vi kan ikke bare holde seg rolig og vente på fremgang hendelsen til slutt, fordi det tar litt tid å laste bildet (eller SWF), spesielt når bildet er tung eller overføres på nettet. Så, for å holde brukeren engasjert, vi må holde informere ham om tilstanden i lasten. Nå, hva å informere? 
 Mens pågår, kan vi vise meldingen som sier "Vennligst vent. File is loading". Vi kan også vise "dagens bytes lastet" på skjermen ved hjelp av informasjon fra PROGRESS hendelsen. 
 Vi kan gjøre slike oppgaver mens denne hendelsen behandler. Derfor er det på andre plass. 
 
-  Event.INIT 
 Denne hendelsen er best egnet for å laste ned SWF-filer fra Internett. 
 Hvis du legger SWF fra lokal maskin seg selv og SWF er lett, så det er nesten identisk timet til COMPLETE hendelsen. Mang en gang du finner ingen forskjell mellom INIT og fullstendig hendelser, fordi i løpet av kort tid, du er i en tilstand av fullstendig, forlater umiddelbart INIT staten. 
 Men situasjonen endrer seg når du legger den SWF (s ) fra internett. I tillegg, hvis SWF (har animasjoner eller mange objekter) er målet, så vil det ta lengre tid å laste ned. I dette tilfellet INIT blir hendig. 
 Så snart SWF header er lesbar, er denne hendelsen avsendt og dokumentet klasse for hoved SWF er instansiert. Det første bildet er tilgjengelig, og du kan gjøre noen forhåndslaste handlinger eller du kan definere noen egenskaper, mens resten av den delen er fortsatt laster ned. 
 Denne hendelsen er den tredje til brann i en vellykket belastning. 
 < li> HTTPStatusEvent.HTTP_STATUS
 Når du legger eiendeler over Internett (ved hjelp av en HTTP-forespørsel), HTTP-statuskode (f.eks 200) returneres hvis forbindelsen er OK. Ellers 0 returneres 
 Hvis tilkoblingen er i orden, men filen er ikke funnet, deretter 404 returneres 
 For mer informasjon om HTTP Statusmeldinger, følg linken nedenfor:.. 
 HTTP Statusmeldinger 
 Selv om denne hendelsen sjekker status for tilkoblingen til den eksterne serveren, er det trigerred selv i tilfelle av laste eiendeler lokalt - men i dette tilfellet er det alltid returnerer 0. Denne hendelsen branner fjerde. 
 
 Event.COMPLETE
 Som navnet antyder, vil dette arrangementet bli sendt ut når et bilde (eller SWF) er helt lastet på brukerens maskin. Ved dette punktet, er bildet eller SWF helt tilgjengelig for videre prosess. Derfor er denne hendelsen på siste plass i lasteoperasjonen 
 Det er også noen andre hendelser som så. 
 
-  AsyncErrorEvent.ASYNC_ERROR: 
 Denne feilen oppstår når en SWF, kjører asynkron kode (som AS2), er lastet 
 
 SecurityErrorEvent.SECURITY_ERROR:..
 Denne feilen oppstår når Flash Player sikkerhetsmodell blir brutt under en lasteprosessen 
 For den siste info om sikkerheten modell av Flash Player, ta en titt på Flash Player Security 
 For mer info om SecurityErrorEvent.SECURITY_ERROR spesifikt, her er noen linker til følge.: 
 
 SecurityErrorEvent
 
 Sikkerhet Klasse
 Selv om vi kan hoppe over noen av disse hendelsene - som "OPEN", "HTTPStatus", "INIT" - når lasting eiendeler lokalt, sporing alle av dem sikrer en høy grad av overvåking av en lasteoperasjon 
 
 
 Trinn 4:. Klar Document Class
 Etter å vite alle nødvendige hendelsestyper, nå er det tid for lasting eiendeler. 
 Først skal vi skape en grunnleggende strukturen i vår dokument klasse. 
 For detaljert forklaring om dokumentet klassen sjekke ut denne hurtig Tip. 
 Last ned alle kildefilene som kreves for dette oppdraget ved å klikke på "Last ned Source Files" -knappen tilgjengelig på toppen av siden. 
 Mappen inneholder "LoaderClassExample.fla", "MyImage.png". 
 Også er det "MyLoader_Complete.as" fil, fra slutten av opplæringen. Vi kommer til å bygge denne klassen, trinn for trinn, for bedre forståelse. På slutten av denne opplæringen, vil vi ha vår egen versjon av denne klassen. 
 Åpne Flash og skape nye "Actionscript 3.0 Class" fil og gi den navnet "MyLoader". 
 Du vil ha den grunnleggende strukturen i klassen slik: 
 pakken {public class MyLoader {offentlig funksjon MyLoader () {//konstruktør kode}}}Lagre denne klassen filen som "MyLoader.as" i samme nedla mappen. 
 Deretter åpner du lastet ned "LoaderClassExample.fla" fil. Ikke bekymre deg om objektene på scenen. Vi skal se sine roller i de kommende trinn. 
 Så, først må vi endre dokumentklasse fra "MyLoader_Complete" til "MyLoader", i Property Inspector av FLA. 
 Nå, Klassenavn må lese slik: 
 
 
 Trinn 5:. Legge et bilde
 Til å begynne med, vil vi laste bildet "MyImage.png" plassert i den nedlastede mappen 
 De grunnleggende kravene kan bli notert ned, slik:.. 
 
 Loader Class å skape Loader Object
 
 URLRequest Object å angi banen av et bilde
 .
 load () metoden Loader Class
 
 vise bildet på skjermen
 Så, for å oppfylle kravene ovenfor, modifisere "MyLoader.as" som så.: 
 pakke {import flash.display.Sprite; import flash.display.Loader; import flash.events.MouseEvent; import flash.net.URLRequest; public class MyLoader strekker Sprite {private Var myURL: String; private Var loader: Loader; offentlig funksjon MyLoader () {myURL = "MyImage.png"; loader = new Loader (); addChildAt (loader, 0); loadButton.addEventListener (MouseEvent.CLICK, loadAsset, falsk, 0, true); } Private funksjon loadAsset (evt: MouseEvent): void {loader.load (ny URLRequest (myURL)); removeChild (loadButton); loadButton.removeEventListener (MouseEvent.CLICK, loadAsset); }}}Test filmen, og klikk på "Start Loading" -knappen. . Bildet er lastet og vises 
 Siden, målet var et bilde, vi trengte Loader klasse for å skape Loader Object 
 Derfor, i vår kode satte vi linjene slik:. 
 import flash.display.Loader;Over linje gjort Loader klassen tilgjengelig på vårt program 
 private Var loader:.. Loader;Over linje erklærte loader Var å lagre Loader objekt 
 loader = ny Loader ();Over linje opprettet Loader objektet og tildelt den til en loader Var 
 Nå kan vi få tilgang til last () metoden Loader klassen 
 I vår kode.. , nås vi load () metoden slik: 
 loader.load (ny URLRequest (myURL));load () metoden er mest avgjørende del av vår kode 
 Vi passerte bare én. parameter som URLRequest til denne metoden. Egentlig kan det ta to parametere. Den andre parameteren er LoaderContext objekt. Den URLRequest er nødvendig mens LoaderContext er valgfritt parameter 
 For eksempel loader.load (URLRequest, LoaderContext);. 
 La oss se på kort info om URLRequest og LoaderContext i neste par skritt <. br> 
 
 Trinn 6: URLRequest og -baner
 I vår kode, skapte vi forekomsten av URLRequest objekt som så: 
 loader.load (ny URLRequest (myURL)); //myURL er en StringVi brukte en forkortelse metode for å lage en forekomst av URLRequest, som er greit for vårt eksempel, men ikke en god praksis generelt. Det bør ikke brukes til store prosjekter (f.eks en ramme). Problemet er at det etterlater ingen referanse til URLRequest at vi kan bruke igjen senere 
 I stedet bruker denne tilnærmingen: 
 Var urlRequest. URLRequest = new URLRequest (); 
 < p> urlRequest.url = myURL;
 loader.load (urlRequest);. 
 Nå kan du referere til urlRequest helst du ønsker 
 Nå, la oss lære om . URLRequest, absolutte stier, og relative baner 
 URLRequest: Dette objektet gir oss muligheten til å ta opp målet ved å angi en bane 
 Denne banen kan være en av to typer:. 
 -  http 
 
 http (sikker HTTP)
 
 file
 Sjekk denne linken for mer informasjon om HTTP og HTTPS 
 
 Relativ bane -.. gir en del av banen til eiendelen
 Relativ bane kan deles inn i to deler som så: 
 
 Dokument Relativ
 
 MyImage.png (vi brukte denne veien i koden ovenfor som myURL .)
 
 Eiendeler /MyImage.png
 
 Root Relativ
 
 ../Eiendeler /MyImage.png
 
 ../../Assets/MyImage.png
 Bruk tilfelle av ovennevnte to banene avhengig av prosjektet. Men i de fleste tilfeller vil du ende opp med å bruke "Dokument Relativ" banen i stedet for "Root Relativ" banen 
 Document Relativ sti illustreres slik:. 
 (SWF er i en mappe parallelt med Eiendeler mappe) 
 Root Relativ sti illustreres slik:. 
 
 
 Trinn 7: Loader Context
 Vi har ikke brukt denne parameteren i vårt eksempel, men å ha informasjon om den vil legge verdien 
 Loader Kontekst:. Denne valgfrie parameteren gir tilgang til de egenskaper som så: 
 
 Sikkerhet Domain
 
 Application Domain
 
 Sjekk Regler fil
 La oss se noen kort info om disse egenskapene. 
 
 Sikkerhet DomainloaderContext.securityDomain = SecurityDomain .currentDomain; 
 Dette tvinger loadee SWF (fra andre domenet) som skal plasseres i laste SWF domene. Som standard loadee SWF er plassert i sin egen sikkerhet domene (på grunn av Flash Player sikkerhetsmodell). 
 Dessuten må en politikk fil (f.eks crossdomain.xml) være tilgjengelig på loadee SWF server for å etablert tilliten mellom ulike servere. Dermed sikrer interoperabilitet mellom SWF. 
 Når du legger inn bilder, er denne egenskapen ikke er nødvendig. 
 
-  Application Domain En gang, er alt i din egen sikkerhet domene, så du kan spesifisere loaderContext.applicationDomain. 
 f.eks loaderContext.applicationDomain = ApplicationDomain.currentDomain; 
 Det kan kryss skripting mellom SWF. f.eks Den loadee SWF kan få tilgang til klassen forbundet med forelder SWF, da satt som ApplicationDomain.currentDomain. 
 Denne egenskapen er ikke nødvendig mens lasting av bilder. 
 Sjekk dette eksemplet som tillater tilgang til klassen definisjonen av loadee SWF. ApplicationDomain.currentDomain.getDefinition("com.SomeFolder.SomeAS3Class"); 
 ApplicationDomain.currentDomain.getDefinition("SomeLibrarySymbol") som klasse;
 (Merk:.... Være oppdatert med Adobes policy om tilgang til eksterne skript Det er relatert til sikkerhetsmodellen Adobe blir stadig bedre sikkerhetsmodell Så holde styr på Adobes dokumentasjon) 
 Les følgende linker for mer info om anvendelse Domain: 
 Application Domain 
 Loader Context Application Domain 
 
 Sjekk Regler filDenne egenskapen kan brukes til begge (SWF og et bilde). 
 f.eks loaderContext.checkPolicyFile = true; 
 Når denne egenskapen er satt til sann, så det sjekker alltid for policyfilen (crossdomain.xml) på serversiden. Hvis det ikke blir funnet, er en sikkerhets sandkasse feil kastet. 
 Sett denne egenskapen til sann bare når du ønsker å gjøre flere handlinger enn bare å vise at innholdet på skjermen. Ellers beholde denne egenskapen som en falsk. 
 f.eks Når du legger inn et bilde fra den sikre serveren, og hvis du ønsker å bruke BitmapData.draw metoden på at lastet innhold, og deretter sette denne egenskapen til sann. 
 Følgende er noen flere linker relatert til Flash Player Security: 
 Sikkerhet sandkasser 
 Tillatelse kontroller 
 I dette trinnet fullførte vi en svært enkel oppgave å laste et bilde. Men mens lasting vi ikke spore informasjon om lasting. Vi har nettopp sett og ventet å ha bilde på skjermen. I neste trinn vil vi se hva som er nødvendig for å overvåke innlastingen av et bilde 
 
 
 Trinn 8:. LoaderInfo og contentLoaderInfo
 venner, i det foregående trinn lastet vi et bilde uten å spore Belastningen. Denne gangen vil vi begynne å overvåke lasting prosessen med dette bildet. For det vil vi gjøre bruk av ulike arrangementer vi diskuterte i trinn 3. 
 Men vi fortsatt ikke vet hvordan de skal knytte disse hendelsene med Loader klasse. Så, la oss utforske det 
 Loader klassen kommer med en svært viktig egenskap.:. ContentLoaderInfo 
 Denne eiendommen nødvendig for å knytte laste hendelser med lasten () metode for Loader klassen. 
 Følgende er et eksempel, som sporer COMPLETE ved lasting prosessen 
 loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete);. 
 Når målbildet er helt lastet, er "loadComplete" metoden kalles. Denne metoden kan ha din etter lasting logikk, f.eks og legger til at bildet til scenen. 
 Vi er definitivt kommer til å bruke denne eiendommen meget snart. Men før det, la oss se hva det gjør med Loader klassen. 
 Loader klassen ikke har noen informasjon om innlastingen. Faktisk er denne informasjonen hentes fra contentLoaderInfo som ytterligere utnytter LoaderInfo objektet. 
 
 Hva er loaderInfo? Hva er contentLoaderInfo?
 For å forstå disse vilkårene, skal vi eksperimentere med vår "MyLoader.as" Class. 
 Denne gangen skal vi faktisk bruke COMPLETE hendelsen. Så, la oss legge vår nye funksjon loadComplete og noen flere linjer til koden slik: 
 import flash.events.Event;Listen linjen gjør Event klassen tilgjengelig på vårt program. Dermed kan vi bruke COMPLETE hendelsen 
 privat funksjon loadComplete (evt: Hendelses):. Void {trace ("Load Complete"); trace (evt.target);}Dette loadComplete funksjonen vil bli kalt når målbildet er helt full. Det vil spore «Last ned hele" for å være sikker på at denne funksjonen er påberopt. Det vil også spore den type av målet (Loader). 
 Nå, for å knytte denne COMPLETE hendelse med Loader, skal vi i vår kode endre konstruktøren metode slik: 
 offentlig funksjon MyLoader () {myURL = "MyImage.png"; loader = new Loader (); addChildAt (loader, 0); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); loadButton.addEventListener (MouseEvent.CLICK, loadAsset, falsk, 0, true); }Test filmen og trykker på "Start Loading" -knappen 
 Utgangen vinduet vil vise resultatene, som så. 
 Load Komplett 
 [objekt LoaderInfo ] 
 Den returnerer LoaderInfo objekt som et mål. Så kan vi si at contentLoaderInfo utnytter LoaderInfo objektet 
 
 Hva er loaderInfo
 Så, la oss eksperimentere mer 
 Endre loadComplete metoden slik:.?. 
 privat funksjon loadComplete (evt: Hendelses): void {trace ("contentLoaderInfo:" + loader.contentLoaderInfo.height); trace ("loaderInfo:" + loader.loaderInfo.height);}Test filmen og trykker på "Start Loading" -knappen 
 Utgangen vinduet viser resultatet slik:. 
 contentLoaderInfo: 600 
 loaderInfo: 640 
 Her contentLoaderInfo returnert høyden (600) av målbildet 
 Og, loaderInfo returnert høyden (640) av. main (root) SWF. 
 Hvis du ønsker å eksperimentere mer, erstatte "height" eiendom med "url" 
 Dette vil gjøre loaderInfo gi informasjon om rot SWF og contentLoaderInfo gi informasjon om innholdet som blir lastet av Loader objektet. Men både utnytte LoaderInfo objektet. 
 OK, nå vet vi hvordan vi skal knytte laste hendelser ved hjelp contentLoaderInfo med loader objekt. Det neste vi skal begynne å utforske alle disse hendelsene en etter en i riktig rekkefølge 
 
 
 Trinn 9:.? Hvilke hendelser for å bruke
 Vi har allerede diskutert de nødvendige hendelsene i trinn 3. Men, jeg liste dem igjen, bare for en revision. 
 IOErrorEvent.IO_ERROR
 Event.OPEN
 ProgressEvent.PROGRESS
 Event.INIT
 HTTPStatusEvent.HTTP_STATUS
 Event.COMPLETEIn forrige trinn, brukte vi Event.COMPLETE. Men husk, dette er den siste hendelsen for å bli sparket, så vi må spore andre arrangementer før Event.COMPLETE. 
 Også, mens du legger et bilde det ikke er behov for å spore alle de ovennevnte hendelsene. 
 < p> Legge et bilde (lokalt) vil kreve bare disse hendelsene:
 
 IOErrorEvent.IO_ERROR
 
 ProgressEvent.PROGRESS
 
 Event.COMPLETE eller Event.INIT
 
 Hvis bildet er lastet eksternt (via HTTP-forespørsel) legge HTTPStatusEvent.HTTP_STATUS til listen ovenfor. 
 Men for vårt eksempel skal vi spore alle over hendelser for å få til læring. Du kan også når som helst endre URL for å laste en SWF -. Fordi det meste av tiden, sporing lasting prosessen med en SWF krever at alle disse hendelsene 
 Så, la oss starte med IOErrorEvent.IO_ERROR <. br> 
 
 Trinn 10: IOErrorEvent.IO_ERROR
 For å spore IOErrorEvent.IO_ERROR, først legge en import uttalelse som så: 
 import flash.events.IOErrorEvent;Vi skal legge en ny metode loadError som så: 
 privat funksjon loadError (evt: IOErrorEvent): void {monitor.errorEventTF.text = "URL: '» + myURL + "' ikke funnet";}I tilfelle målbildet er ikke funnet, så IOErrorEvent vil bli utløst. Ovennevnte loadError metoden vil bli påberopt. Denne metoden vil vise en melding om nettadressen i den dynamiske tekstfeltet som heter "errorEventTF" som er inne i "monitor" MovieClip, allerede plassert på scenen. 
 Vi skal også endre konstruktøren metode å assosiere det med loader objekt 
 offentlig funksjon MyLoader () {myURL = "MyImage.png."; loader = new Loader (); addChildAt (loader, 0); loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERROR, loadError); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); loadButton.addEventListener (MouseEvent.CLICK, loadAsset, falsk, 0, true); }For å teste ioError status, satt inn feil url (f.eks myURL = "MyImage1.png"). 
 Test filmen, og klikk på "Start Loading" for å se status på ioError hendelsen. Skjermen viser feil URL 
 
 
 Trinn 11:. Event.OPEN
 For å spore Event.OPEN, skal vi legge en ny metode loadStart () slik: 
 privat funksjon loadStart (evt: Hendelses): void {monitor.openEventTF.text = String ("Sti åpnet");}Vi skal også endre konstruktøren metode for å knytte den til den loader objektet 
 offentlig funksjon MyLoader. () {myURL = "MyImage.png"; loader = new Loader (); addChildAt (loader, 0); loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERROR, loadError); loader.contentLoaderInfo.addEventListener (Event.OPEN, loadStart); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); loadButton.addEventListener (MouseEvent.CLICK, loadAsset, falsk, 0, true); }Test filmen, og klikk på "Start Loading" for å se status på OPEN hendelsen 
 
 
 Trinn 12:. ProgressEvent.PROGRESS
 Vi skal spore innlastingen av target . image ved å oppdatere det totale antall bytes lastet inn for øyeblikket 
 For å spore ProgressEvent.PROGRESS arrangement, første vi skal legge til en ny variabel totBytesLoaded som så: 
 private Var totBytesLoaded: Number;Deretter legger import statement for ProgressEvent Class slik: 
 import flash.events.ProgressEvent;Nå skal vi legge en ny metode loadProgress som så: 
 privat funksjon loadProgress (evt: ProgressEvent): void {totBytesLoaded = Math .ceil (evt.bytesLoaded /1024); monitor.progressEventTF.text = "Bytes lastet:". + String (totBytesLoaded) + "kb";}Vi skal også endre konstruktøren metode for å knytte den til den loader objektet 
 offentlig funksjon MyLoader () {myURL = "MyImage.png"; loader = new Loader (); addChildAt (loader, 0); loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERROR, loadError); loader.contentLoaderInfo.addEventListener (Event.OPEN, loadStart); loader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, loadProgress); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); loadButton.addEventListener (MouseEvent.CLICK, loadAsset, falsk, 0, true);}Test filmen, og klikk på "Start Loading" for å se status på PROGRESS hendelsen 
 Du kan ikke se noen. synlig belastning fremgang, siden vi legger i målbildet lokalt. Men, hvis det kommer til å bli lastet eksternt vil du ha en synlig innlastingen. 
 Du kan likevel sjekke det samme lokale bildet, som om den blir lastet eksternt. Men, hvordan ?. 
 I Flash IDE test spiller, er det et alternativ "Simuler Last ned". Dette alternativet må være sjekket for å se hvordan nedlastingen fremgang vil se ut for det samme lokale bildet. Dette er bare en simulering. Det vil gi deg bare en viss idé om fremgangen. 
 Du kan også simulere ulike tilkoblingshastigheter under "Last ned Innstillinger", tilgjengelig under "Simuler Last ned". 
 Når "Simuler Last ned" er avkrysset Klikk på "Start Loading" -knappen. Nå vil du ha synlig innlastingen. Observer "Progress" lesing i vårt monitor vinduet. 
 Du kan også legge til en fremdriftslinje for visuelle inntrykket av en innlastingen. 
 Jeg har ikke laget en fremdriftslinje, men hvis du ønsker å legge den, så her er noen linjer for å legge til en fremdriftslinje. 
 Før koding for fremdriftslinje, drar ProgressBar komponent fra Component panelet til biblioteket for å gjøre den tilgjengelig for oss. 
 Etter det, legger import statement for ProgressBar som så: 
 import fl.controls.ProgressBar; 
 Deretter erklærer en VAR å holde fremdriftslinjen slik: 
 Var myProgressBar: ProgressBar; 
 Nå instantiate det og angi en kilde som contentLoaderInfo av en loader objekt som så: 
 myProgressBar = new ProgressBar (); 
 myProgressBar.source = loader.contentLoaderInfo; 
 myProgressBar.x = stage.stageWidth /2 - myProgressBar.width /2; 
 myProgressBar.y = stage.stageHeight /2 - myProgressBar.height /2; 
 addChild (myProgressBar); 
 Du kan legge til disse linjene inne konstruktør metode eller du kan lage din egen metode, og kaller det inne en konstruktør metode 
 Ikke glem å fjerne dette. fremdriftsindikator inne loadComplete metode som så: 
 removeChild (myProgressBar); 
 
 
 Trinn 13: Event.INIT
 For å spore Event.INIT hendelse, vi skal legge en ny metode initialisert () slik: 
 privat funksjon initialisert (evt: Hendelses): void {monitor.initEventTF.text = String ("Startet");}Vi skal også endre konstruktøren metode for å knytte det . med loader objekt 
 offentlig funksjon MyLoader () {myURL = "MyImage.png"; loader = new Loader (); addChildAt (loader, 0); loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERROR, loadError); loader.contentLoaderInfo.addEventListener (Event.OPEN, loadStart); loader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, loadProgress); loader.contentLoaderInfo.addEventListener (Event.INIT, initialisert); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); loadButton.addEventListener (MouseEvent.CLICK, loadAsset, falsk, 0, true);}Test filmen, og klikk på "Start Loading" for å se status på INIT hendelsen 
 
 
 Trinn 14. : HTTPStatusEvent.HTTP_STATUS
 Dette HTTPStatusEvent ikke er nødvendig for lasting av bilder lokalt. Vi kan bare erstatte den lokale banen med en ekstern URL å sjekke status for denne hendelsen. 
 For fullstendighetens skyld skal vi knytte denne hendelsen, selv for innlasting av bilder lokalt (i så fall vil den komme tilbake " 0 "som en statuskode). Sjekk Trinn 3 for mer info om dette arrangementet 
 Hvis du vil knytte HTTPStatusEvent, legger import uttalelse som så. 
 Import flash.events.HTTPStatusEvent;Legg til en ny linje inne konstruktør metode som så: 
 loader.contentLoaderInfo.addEventListener (HTTPStatusEvent.HTTP_STATUS, onHttpConnect);Nå setter den nye funksjonen httpStatus som så: 
 privat funksjon httpStatus (evt: HTTPStatusEvent): void {monitor.httpEventTF.text = String (evt.status);}Test filmen, og klikk på "Start Loading" -knappen. Statusen vil vise "0" siden målet er lokal 
 
 Trinn 15:. Event.COMPLETE
 Til slutt, er det tid for Event.COMPLETE hendelsen. Vi har allerede lagt COMPLETE hendelsen i trinn 8, mens læring LoaderInfo og contentLoaderInfo. 
 Dette er vår destinasjon. Behandle dette som en inngangsport for koden etter lasting er fullført. Her kan du starte videre behandling. 
 Viktige oppgaver kan gjøres her er listet opp ned, 
 
 Legg til lasteren objekt til en skjerm listen.
 
-  Erklærer og /eller tilordne verdier til nødvendige variablene. 
 
 Ring for en funksjon ansvarlig for videre bearbeiding.
 
 Legg til hendelsen lyttere (f.eks ENTER_FRAME hendelse).
 
 Fjern hendelsen lyttere. Anmeldelser
 Her skal vi endre loadComplete () metoden ved å legge til en linje, etter addChildAt (loader, 0); 
 Vi har allerede lagt til denne linjen i en konstruktør metode . Men i stedet for å legge det i en konstruktør metode, må vi legge dem inn etter lasteprosessen er fullført. Dette er en god praksis 
 Så, vi skal endre konstruktøren metode, ved å fjerne setningen addChildAt (loader, 0);. 
 ... for å legge den belastede bilde til bunnen av visningslisten 
 Den modifiserte konstruktør vil se ut slik:. 
 offentlig funksjon MyLoader () {myURL = "MyImage.png"; loader = new Loader (); loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERROR, loadError); loader.contentLoaderInfo.addEventListener (Event.OPEN, loadStart); loader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, loadProgress); loader.contentLoaderInfo.addEventListener (Event.INIT, initialisert); loader.contentLoaderInfo.addEventListener (HTTPStatusEvent.HTTP_STATUS, httpStatus); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); loadButton.addEventListener (MouseEvent.CLICK, loadAsset, falsk, 0, true);}Nå endrer loadComplete metode som så: 
 privat funksjon loadComplete (evt: Hendelses): void {monitor.completeEventTF.text = String («Last ned hele"); addChildAt (loader, 0);}Test filmen, og klikk på "Start Loading" for å se status på COMPLETE hendelsen 
 Dermed har vi den komplette oppsett for å overvåke lasting prosessen med en. . image samt SWF 
 Også, kan du bare erstatte den adressen banen for å laste et bilde eller SWF fra alle tilgjengelige ekstern server 
 
 
 Trinn 16:. Loading Fra Internet
 Nå skal vi se hvordan du legger et bilde fra internett. Selvfølgelig må du ha en fungerende Internett-tilkobling 
 Først skal vi endre vår myURL slik:. 
 MyURL = "http://www.free-pictures-photos.com/architecture/house- 5xl3.jpg ";Test filmen, og klikk på" Start Loading "-knappen. 
 Previous:Wanted: Bloggers
 
 Absolute Sti -. gir hele banen til en eiendel
 Her er noen eksempler på Absolute Path: 
 http://SomeDomain/assets/MyImage.png
 D://MyProject/Assets/MyImage.pngAbsolute Sti brukes mest til å laste ned ressurser fra andre domener over Internett. Å være hardkodet, disse banene ikke gi en fleksibel tilnærming. Derfor for bærbare prosjekter (spesielt for stasjonære apps) ikke har tenkt å bruke slike baner 
 Den bruker standard URI ordninger slik:. 
 
-  http 
Bilder.
SWF.
Lyder.
Videoer.
Tekstfiler (inkludert tekst , XML, JSON, og noen ganger Binary Data).
 Disse eiendelene har sine egne metoder for lasting som de er annerledes i naturen. Du kan ikke se lyden, og du kan ikke høre bilder, så det er helt akseptabelt å ha ulike teknikker for disse ulike typene. 
 
 Derfor kan du ikke belastning høres slik du laste ned bilder og vice versa. Du må velge riktig metode for de utvalgte eiendeler 
 
 Følgende er hensiktsmessige måter å laste disse eiendelene. 
 
Bilder og SWF: "load ()" metoden " Loader "klassen brukes til å laste inn bilder og SWF. Vår tutorial er dedikert til denne delen
 
 
 Lyder:.. "Load ()" metoden for "Sound" klassen brukes til å laste inn eksterne MP3 lydfiler 
 
 
 
 Videoer:. 
 FLV video format eller et videoformat som bruker standard H.264-koding er støttet av AS3 
 
 Video uten FLV komponent kan lastes og streames bruke klasser som "NetConnection" og "Netstream". 
 
 Video med FLV komponent kan lastes og streames med "source" metode som myFLVComponent.source ("MyVideo.flv"). 
 
 
 
 Tekstfiler (inkludert tekst, XML og noen ganger Raw Binary data): 
 
 For å laste slike type data, må du bruke den URLLoader klassen, som laster data fra den angitte URL. Alle typer data kan lastes, men i form av tekst eller rå binære data eller kodet variabler. 
 
 f.eks Du kan også laste et bilde i form av rå, binære data og videre bruke den for behandling med "ByteArray" klasse. 
 
 Så, la oss avslutte den teoretiske delen her og bevege seg mot praktiske ting. Nå har vi nok kunnskap om eiendeler. I resten av opplæringen, vil vi håndtere lasten () -metoden (av "Loader" klasse) og tilhørende arrangementer, for å overvåke lasting prosessen med et bilde og en SWF. 
 
Trinn 3: Hendelser for Overvåke Loading Process
 Før du beveger deg mot Loader klassen, la oss først se på flere hendelser som er nødvendig for å overvåke lasteoperasjonen: 
 
 IOErrorEvent.IO_ERROR 
 
 Vår første oppgave vil være å sjekke tilgjengeligheten av det angitte målet (dvs. "loadee"). 
 
 Noen ganger, målet er ikke funnet grunn av feil filnavn eller kanskje fordi selve filen finnes ikke lenger på stedet. Selv, i noen tilfeller eiendeler kan ikke være lesbar. Hvis alt er i orden på dette nivået, så vi kan hoppe til å overvåke lasting prosessen. 
 

