Overvåking av lasteprosessen i Flash Med Loader Class

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


    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.

    1. 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.

    2. 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å.

    3. 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 String

      Vi 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:.


        Absolute Sti -. gir hele banen til en eiendel

        Her er noen eksempler på Absolute Path:



        http://SomeDomain/assets/MyImage.png

        D://MyProject/Assets/MyImage.png

        Absolute 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:.

      1. 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 Domain

        loaderContext.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.

      2. 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 fil

        Denne 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.COMPLETE

        In 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.

      3. 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.