, lastning data med kommandoer,,,,, andel,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss ud. det er meget almindeligt at lade eksterne data (f.eks. stg filer) i runtime, men kun, når dataene er fuldstændig ladt kan vi læse eller manipulere med dens indhold.- vi er nødt til at lytte til den komplette omstændigheder afsendt af en skovl, eller, urlloader, objekt, der læsser data for gennemførelsen håndtering.vi skriver kode, der meget ofte data i en funktion, og skrive kode, der tager sig af gennemførelsen af læsning i en anden funktion, men dette kan forbedres ved at gruppere hele belastningsprocessen sammen...... denne forelæsning viser, hvordan til at skabe en lastnings - udvidelse til kommando - ramme i min forrige lektion, tænker i kommandoer del 1, 2, at pakke ved gennemførelsen håndtering på ét sted.denne belastning udvidelse kan også kombineres med den scene forvaltning, der er omhandlet i del 2 af 2 på ordrer.mange arter, der anvendes i denne lektion er omfattet i den foregående forelæsning, og jeg anbefaler, at du læser det foregående tutorials, inden den. desuden denne forelæsning indfører begrebet data manager, en central "bank", der oplagrer henvisninger til data objekter.kan du registrere data til data krybbe med en unik centrale snor, og senere adgang til de oplysninger, ved at stille de tilsvarende væsentlige snor.det sparer dig for at holde henvisninger til data genstande og en variabel rækkevidde spørgsmål., af den måde, du får brug for den greensock tweening platform for at gennemføre disse eksempler.,, hvorfor belastning data med ordrer?normalt klarer vi læsset data i fuldstændig begivenhed efter funktion.det falder fra hinanden i to bidder af kode, der er logisk forbundet.og ved at se på den kode, din strøm af troede ville være afbrudt som syne hopper fra - funktion til fuldstændig begivenhed efter. lad os se på logikken strøm af en naiv stg - tilgang.,, lader en omvendt belastninger fra en url, og, oncomplete(), funktion påberåbes af, dispatchevent(), metode, der sender en komplet begivenhed, hvor, dispatchevent(), metode anvendes internt af den rampe.- det er faktisk anvendelse af, loaderinfo, objekt, som tilhører, lad, objekt, men for enkelhed, lad os bare sige, dispatchevent(), metode kan påberåbes af den pålæsser. næste inden for, oncomplete(), funktion, domorestuff(), funktion er gældende efter afslutningen af er - færdig, og som fungerer navn antyder, har flere ting, den højtstående logik strøm kan lineær: påberåbe sig, at lade. load(), metode, oncomplete(), andet og domorestuff(), tredje.men som du kan se fra det billede, hver enkelt funktion er påkaldelsen er indbygget i funktion i den foregående, hvilket resulterer i en "indlejrede" kode.i min egen mening, hvis logikken strøm af en bestemt funktion er lineær, de dertil knyttede kode skal være skrevet med en lineær måde, ikke kan slippe uset forbi.ellers koden kan undertiden forvirrende, når de påberåber sig rede niveau er for højt. det er da kommando tilgang spiller ind.i diagrammet nedenfor, kan vi se, at denne kodeks er ret lineære anvende kommandoer i, at alle kommandoer er lineært lænket sammen af en serie kommando.selv om programmet "leder" i, setproperties(),, addchildloader(), og domorestuff(), funktioner og deres tidligere er lineær, dataadministrator, okay, før vi kommer til noget mere om lastning, lad os tage et kig på det, datamanager, klasse.en dataadministrator lader du forbinder en central snor med data objekt og du kan få en henvisning til disse data formål overalt i din kode.med de oplysninger, chef, du behøver ikke at bekymre dig om opbevaring af data henvisninger og variabel rækkevidde.alt du skal gøre er at registrere et stykke af data til direktør med en central -, kodning, er ret ligetil, som vist nedenfor, herunder data (import flash.utils.dictionary; offentlige klasse datamanager (//en ordbog, der opretholder den snor data forbindelser menig static var _data: ordbog = nye dictionary(); //afkast de data, der er forbundet med en væsentlig kæde offentlige formål statisk funktion getdata (nøgle: string): * {tilbage _data [centrale]} //registre, data objekt med en nøgle kæde offentlige statisk funktion registerdata (nøgle: string, data: *): ugyldig (_data [centrale] = data) //unregisters en vigtig kæde offentlige statisk funktion unregisterdata (nøgle: string): ugyldig (slette _data [centrale]}////////unregisters alle centrale strenge offentlige statisk funktion cleardata(): ugyldig (for (var - nøgle: snor i _data) (overstreges, _data [centrale]}}}}, når vi ønsker at blive et centralt string "mydata" med en data - objekt - en sprite - - kan vi skrive koden som følger:, var sprite: sprite = nye sprite(); datamanager. registerdata ("mydata", sprite), senere, hvor som helst i kode, vi kunne skrive følgende kode for at opnå en henvisning af sprite og tilføje det til en udstilling.det er så simpelt, ikke flere spørgsmål om opretholdelse af objektreferencer og variabel rækkevidde., var sprite: sprite = datamanager.getdata ("mydata") som sprite, beholder. addchild (sprite), naive - tilgang, så lad os se på, hvordan den naive - tilgang belastninger, et image udadtil.- kode ligger i en funktion og gennemførelsen af kode ligger i en anden.vi skal lige tre billeder og tilføjer dem til den fase, hvor læsning er fuldført.også vi vil overvåge lastning fremskridt ved at lytte til de fremskridt, der er gjort arrangementer.,, trin 1: blitz dokument, åben - og skabe en ny flash dokument.,, trin 2: skabe en statusbar, gøre fremskridt bar på scenen. det er for at repræsentere - fremskridt.konvertering af hele fremskridt bar til et symbol og give det et tilfælde af "progressbar_mc".inden for de fremskridt, der bar symbol, omdanne det indre udvikling bar til et symbol, og give det et tilfælde af "innerbar_mc".,, trin 3: forberedelse af billeder, tre billeder i den samme mappe som fia - fil, der hedder "image1 jpg", "image2 jpg" og "image3. jpg".her er, hvad de tre billeder ligner.,, trin 4: skabe dokument klasse, skabe en ny som dokumentation for det dokument, klasse for fia - fil.koden er ret ligetil, og alle de oplysninger, der er anført i bemærkningerne.første tre læssemaskiner er skabt og lastningen påbegyndes.på hvert fremskridt begivenhed, der bar ajourføres.når læsning er afsluttet, der bar imod og tre billeder i en efter en., pakke (import com.greensock.tweenmax; import flash.display.displayobject; import flash.display.loader; import flash.display.movieclip; import flash.events.event; import flash.events.progressevent; import flash.net.urlrequest; offentlige klasse naiveloading udvider movieclip (private var loader1: anordninger; private var loader2: anordninger; private var loader3: anordninger; offentlig funktion naiveloading() (//psykolog fremskridt bar til nul omfang progressbar_mc.innerbar_mc.scalex = 0; //skabe læssemaskiner loader1 = nye loader(); loader2 = nye loader(); loader3 = nye loader(); //add programmeress lyttere loader1. contentloaderinfo. addeventlistener (progressevent.progress, om); loader2. contentloaderinfo. addeventlistener (progressevent.progress, om); loader3. contentloaderinfo. addeventlistener (progressevent.progress, om); //add afslutning lyttere loader1. contentloaderinfo. addeventlistener (event.complete, oncomplete); loader2. contentloaderinfo. addeventlistener (event.complete, oncomplete); loader3. contentloaderinfo. addeventlistener (event.complete, oncomplete); //laste loader1. belastning (nye urlrequest ("image1 jpg"); loader2. belastning (nye urlrequest ("image2 jpg"); loader3. belastning (nye urlrequest ("image3 jpg")} privat funktion defremskridt, e udvikling:tilfælde): ugyldig (//beregning af samlede dele belastningen var bytestotal: uint = 0, bytestotal + = loader1.contentloaderinfo.bytestotal; bytestotal + = loader2.contentloaderinfo.bytestotal; bytestotal + = loader3.contentloaderinfo.bytestotal; //beregning af samlede dele ladt var bytesloaded: uint = 0, bytesloaded + = loader1.contentloaderinfo.bytesloaded; bytesloaded + = loader2.contentloaderinfo.bytesloaded; bytesloaded + = loader3.contentloaderinfo.bytesloaded; ////////ajourføre fremskridt bar omfang progressbar_mc.innerbar_mc.scalex = bytesloaded /bytestotal;} private var _completecount: int = 0, privat funktion oncomplete e: begivenhed): ugyldig (_completecount +; hvis (_completecount < 3) return; //fjerne fremskridt lyttere loader1. contentloaderinfo. removeeventlistener (progressevent.progress, om); loader2. contentloaderinfo. removeeventlistener (progressevent.progress, om); loader3. contentloaderinfo. removeeventlistener (progressevent.progress, om); //fjerne afslutning lyttere loader1. contentloaderinfo. removeeventlistener (event.complete, oncomplete); loader2. contentloaderinfo. removeeventlistener (event.complete, oncomplete); loader3. contentloaderinfo. removeeventlistener (event.complete, oncomplete) var image1: displayobject = loader1.content, var image2: displayobject = loader2.content, var image3: displayobject = loader3.content; //tilpasse belastninged image positions \t\t\timage1.x = 30, image1.y = 30; \t\t\timage2.x = 230, image2.y = 30; \t\t\timage3.x = 430, image3.y = 30; \t\t\t \t\t\t//add loaded images to display list \t\t\taddChild(image1); \t\t\taddChild(image2); \t\t\taddChild(image3); \t\t\t \t\t\t//fade out progress bar \t\t\tTweenMax.to(progressBar_mc, 0.5, {autoAlpha:0, blurFilter:{blurX:20, blurY:20}}); \t\t\t \t\t\t//fade in loaded images \t\t\tTweenMax.from(image1, 0.5, {delay:0.5, alpha:0, blurFilter:{blurX:20, blurY:20}}); \t\t\tTweenMax.from(image2, 0.5, {delay:0.7, alpha:0, blurFilter:{blurX:20, blurY:20}}); \t\t\tTweenMax.from(image3, 0.5, {delay:0.9, alpha:0, blurFilter:{blurX:20, blurY:20}}); \t\t} \t} }, , Step 5: Test the Movie,Press CTRL+ENTER to test the movie. du vil se, at fremskridtene bar umiddelbart imod og tre billeder i.det er, fordi de billeder er lokale filer, dvs. de kan være fyldt næsten øjeblikkeligt.for at simulere online downloadhastighed, udvælge, betragtning > downloade indstillinger > dsl, som den simulerede downloadhastighed, og så tryk ctrl + ind igen uden at lukke vinduet for at starte, der simulerer testen online downloading.denne gang skal du se fremskridt vokser gradvis bredere, før det forsvinder.,, det er tid til at indlæse billederne med kommando ramme.,, nytteværdi kommandoer, før vi går videre, lad os skabe en vis nytte kommandoer, der skal bruges senere i f.eks.også disse kommando klasser er baseret på kommando ramme forelagt i mit tidligere tutor (del 1), og jeg anbefaler, at du går gennem dem, inden jeg går videre.hvis du har læst den tutor før, du kan altid komme tilbage, hvis du har brug for din hukommelsen. data ledere kommandoer, her skal vi skabe to kommandoer til registrering og unregistering data for dataadministrator klasse.det, registerdata, kommando registre data til chefen, mens de, unregisterdata, kommando unregisters data., pakke commands.data (import - kommandoer. kommando; import data.datamanager; //denne kommando registre, data, at de data, registerdata udvider kommando (offentlige klasse forvalter offentlige var centrale: string; offentlige var data: *; offentlig funktion registerdata (nøgle: string, data: *) {this.key = nøglen. this.data = data;} tilsidesætte beskyttede funktion execute(): ugyldig (datamanager. registerdata (key data), complete();}}}, pakke commands.data (import - kommandoer. kommando; import data.datamanager; //denne kommando unregisters data fra dataadministrator offentlige klasse unregisterdata udvider command {offentlige var centrale: string; offentlig funktion unregisterdata (nøgle: serie) (this.key = centrale;} tilsidesætte beskyttede funktion execute(): ugyldig (datamanager. unregisterdata (centrale); complete();}}}, loaderload kommando, kommandoen viser en rampe, instans, load() metode.du kan give en, om fremskridt, kommando, der udføres på hvert fremskridt begivenhed og en, oncomplete, henrettet når læsning er fuldført.bemærk, at de, complete(), metode er anvendt, når belastningen er fuldført.denne linje kode er yderst vigtigt.hvis du ikke påberåbe sig den metode, kommando vil aldrig betragtes som fuldstændig, og hele deres anvendelse i det værst tænkelige scenarie, pakke commands.loading (import - kommandoer. kommando; import flash.display.loader; import flash.events.event; import flash.events.progressevent; import flash.net.urlrequest; import flash.system.loadercontext; offentlige klasse loaderload udvider kommando (offentlige var anordninger: anordninger; offentlige var url: http: //urlrequest; offentlige var sammenhæng: loadercontext; offentlige var om: kommando; offentlige var oncomplete: kommando; offentlig funktion loaderload (anordninger: lad, url: http: //urlrequest sammenhæng: loadercontext = nul, om: kommando = nul, oncomplete: kommando = null) (this.loader =anordninger, this.url = url; this.context = sammenhæng; this.onprogress = defremskridt, this.oncomplete = oncomplete;} tilsidesætte beskyttede funktion execute(): ugyldig (//add lyttere pålæsser. contentloaderinfo. addeventlistener (progressevent.progress, progresslistener); at lade. contentloaderinfo. addeventlistener (event.complete, completelistener); at lade. contentloaderinfo. addeventlistener (event.complete, loadingcomplete) //laste pålæsser. belastning (url, forbindelse);} privat funktion loadingcomplete e: begivenhed): ugyldig (//fjerne lyttere pålæsser. contentloaderinfo. removeeventlistener (progressevent.progress, progresslistener); at lade. contentloaderinfo. removeeventlistener (begivenhed.fuldstændig, completelistener); at lade. contentloaderinfo. removeeventlistener (event.complete, loadingcomplete); complete();} privat funktion progresslistener e: progressevent): ugyldig (//gennemføre om kommando, hvis (om) om. start();} privat funktion completelistener e: begivenhed): ugyldig (//gennemføre oncomplete kommando, hvis (oncomplete) oncomplete. start();}}}, invokefunction kommando, kommandoen viser påkaldelsen af en anden funktion.det har til formål at tillade dig at give en ekstra parameter system for den funktion, kan påberåbes, pakke commands.utils (import - kommandoer. kommando; //denne kommando påberåber sig en funktion, offentlige klasse invokefunction udvider kommando (offentlige var funktionsmuligheder: funktion; offentlige var args: system; offentlig funktion invokefunction (funktionsmuligheder: funktion, args: system = null) (this.func = funktion; this.args = args;} tilsidesætte beskyttede funktion execute(): ugyldig (funktionsmuligheder. anvendelse (null, args); complete();}}}, det er det.tid til f.eks.,, trin 1: kopi flash - dokument fil kopi fla fil fra det foregående eksempel på en ny mappe og kopi billedet filer med.,, trin 2: skabe dokument klasse, skabe en ny som dokumentation for det dokument, klasse af kopieret fia - fil, der hedder "loadingdatawithcommands".husk at ændre dokumentet klasse navn ned i sagen til denne nye. koden for det dokument, klasse er rene.det er den aktuelle situation til en, loadingscene, med en scene.vi bruger den scene ramme forelagt i mit tidligere tutor (del 2).du kan tjekke det ud, hvis du har glemt, hvordan man bruger det., pakke (import flash.display.movieclip; import scenes.scenemanager; offentlige klasse loadingdatawithcommands udvider movieclip {offentlige funktion loadingdatawithcommands() {var scenemanager: scenemanager = nye scenemanager(); scenemanager. setscene (nye loadingscene (det)}}}, er der to scener i alt.det, loadingscene, belastninger de billeder og ajourfører de fremskridt, bar.efter lastningen er fuldstændige, den scene i transit til, mainscene,, som forsvinder i lastet billeder.,, trin 3: - scene, udvide, scene, klasse, for at skabe en ny klasse, der hedder, loadingscene,.den beholder, ejendom, er en henvisning til de vigtigste sprite.dette giver os mulighed for at få adgang til de fremskridt, der bar senere, pakke (import - scener. scene; offentlige klasse loadingscene udvider scene (private var beholder: loadingdatawithcommands; offentlig funktion loadingscene (container: loadingdatawithcommands) (this.container = beholder}}}, skabe intro kommando til lastning scene.præsentationen vil skabe tre dozere og begynde læsning.dette gøres ved at omgå det, createintrocommand() metode.følgende kode går ind i den klasse, som det pågældende. //intro kommando begynder indlæsning af tre billeder over offentlige funktion createintrocommand(): kommando (var - loader1: lad = nye loader(), var loader2: lad = nye loader(), var loader3: lad = nye loader(); var kommando: kommando = ny parallelcommand (0 //psykiater de fremskridt, bar til nul omfang nye setproperties (container.progressbar_mc.innerbar_mc, (scalex: 0}) //- relaterede har henrettet i serie nye serialcommand (0 //registre, de tre læssemaskiner til dataadministrator nye parallelcommand (0, nye registerdata ("loader1", loader1), nye registerdata ("loader2", loader2), nyt registerdata ("loader3", loader3) //begynder tre - kommandoer parallelt nye parallelcommand (0, nye loaderload (loader1, nye urlrequest ("image1 jpg"), nul, nye invokefunction (om) //om kommando), nye loaderload (loader2, nye urlrequest (jpg image2. "), nul, nye invokefunction (om) //om kommando), nye loaderload (loader3, nye urlrequest (" image3 jpg "), nul, nye invokefunction (om) //om kommando)))); tilbage kommando;}, næste, omgå, onsceneset() metode.denne metode er gældende, når en intro kommando er komplet, med angivelse af, at lastningen er fuldført.i denne metode, vi fortæller den scene leder til forsendelse til den store scene.før den scene overgang, usandt kommando er henrettet. tilsidesætte offentlig funktion onsceneset(): ugyldig (scenemanager. setscene (nye mainscene (beholder)}, og så beslutte, createoutrocommand,.denne kommando skal forsvinde. de fremskridt, bar. //den daffer kommando imod de fremskridt, bar tilsidesætte offentlig funktion createoutrocommand(): kommando (var - kommando: kommando = nye serialcommand (0 //fade ud fremskridt bar nye tweenmaxto (container.progressbar_mc, 0, 5, (autoalpha: 0, blurfilter: {blurx: 20, blury: 20)) //fjerne fremskridt bar fra display liste nye removechild (container, beholder. progressbar_mc) afkast kommando;} endelig skabe, fremskridt, der påberåbes af den metode, invokefunction befaler. privat funktion onprogress(): ugyldig (//hente pålæsser referencer fra data manager var loader1: lad = datamanager. getdata ("loader1"), som lader; var loader2: rampe = datamanager.getdata ("loader2"), som lader; var loader3: rampe = datamanager. getdata ("loader3"), som lader; //beregning af samlede dele belastningen var bytestotal: uint = 0, bytestotal + = loader1.contentloaderinfo.bytestotal; bytestotal + = loader2.contentloaderinfo.bytestotal; bytestotal + = loader3.contentloaderinfo.bytestotal; //beregning af samlede dele ladt var bytesloaded: uint = 0, bytesloaded + = loader1.contentloaderinfo.bytesloaded; bytesloaded + = loader2.contentloaderinfo.bytesloaded; bytesloaded + = loader3.contentloaderinfo.bytesloaded; //ajourføring fremskridt bar omfang container.progressbar_mc.innerbar_mc.scalex = bytesloaded /bytestotal;}, trin 4: de vigtigste scene, skabe en ny klasse for de vigtigste scene, udvide, scene, class., pakke (import - scener. scene; offentlige klasse mainscene udvider scene (private var beholder: loadingdatawithcommands; offentlig funktion mainscene (container: loadingdatawithcommands) (this.container = beholder}}}, omgå, createintrocommand() metode.denne metode vil tilføje læssemaskiner på skærmen liste og forsvinder så dem én efter én.desuden er en nøgle i data fra data manager. tilsidesætte offentlig funktion createintrocommand(): kommando (//hente pålæsser referencer fra data manager var loader1: lad = datamanager. getdata ("loader1"), som lader; var loader2: rampe = datamanager. getdata ("loader2"), som var anordninger; loader3: lad = datamanager. getdata ("loader3"), som lader; var kommando: kommando = nye parallelcommand (0 //ladt image håndtering kommandoer nye serialcommand (0 //tilpasse ladt image holdninger nye parallelcommand (0, nye setproperties (loader1 (x: 30, y: 30.}), nye setproperties (loader2 (x: 230 y: 30.}), nye setproperties (loader3 (x: 430, y: 30.}) //add loaded billeder til at vise de nye parallelcommand (0, nye addchild (container, loader1), nye addchild (container, loader2), nye addchild (container, loader3) //fader i lastet billeder nye parallelcommand (0, nye tweenmaxfrom (loader1, 0, 5, (blurfilter: {blurx: 20, blury: 20.}}), nye tweenmaxto (loader1, 0, 5, (autoalpha: 1}), nye tweenmaxfrom (loader2, 0, 5, {forsinkelse: 0, 2 - 0, blurfilter: {blurx: 20, blury: 20}}), nye tweenmaxto (loader2, 0, 5, {forsinkelse: 0,2, autoalpha: 1}), de nye tweenmaxfrom (loader3, 0, 5, {forsinkelse: 0,4, alpha: 0, blurfilter: {blurx: 20, blury: 20}}), nye tweenmaxto (loader3, 0, 5, {forsinkelse: 0, autoalpha: 1)))) //unregsiter data fra dataadministrator n- parallelcommand (0, nye unregisterdata ("loader1"), nye unregisterdata ("loader2"), nye unregisterdata ("loader3")); tilbage kommando;}, løntrin 5: prøvning af film, okay.vi er færdige!prøvning af film og simulere online downloading.du vil se, nøjagtig samme resultat som i det foregående eksempel, men denne gang er det sket med kommando rammer og den scene ramme.,, resumé på denne lektion, jeg har vist dig, hvordan at lade eksterne billeder med kommando - ramme.det, loaderload, kommando kan anvendes til fyldning eksterne stg filer.desuden kan du skabe dit eget befaler at lade eksterne data, andre end billeder og stg filer, ved at de, urlloader, klasse i dine ordrer. vi har skrevet flere koder i andet end den første.kan du huske, anvendelse af kommandoen rammer og den scene ramme ikke er at opnå samme resultat med mindre kode, men til at administrere kodeksen i en systematisk og modulopbyggede fremgangsmåde, som gør livet lettere, når det gælder fremtiden vedligeholdelse og ændring. det første eksempel klemmer alt kode til en enkelt klasse, gør det vanskeligt for fremtidige vedligeholdelse, hvis kodeksen beløb bør blive meget stor.det andet eksempel, på den anden side adskiller logisk uafhængige kode i forskellige scener, som gør det lettere for fremtidige ændringer.også ved at integrere med kommando rammer og den scene rammer, vi har plads til den kommende udvidelse, hvor vi kan tilføje flere scener og intro /daffer ordrer uden at forstyrre irrelevant. det er slutningen af denne forelæsning.jeg håber, du nød det.tak for det!,