Jeg har XML-data i AS3 som må komprimeres, validert på min Java Google App Engine servlet, og deretter lagret i en fil i Google Cloud Storage. Senere vil filen åpnes og dekomprimeres av AS3-klienten. Prosessen fungerer hvis jeg gjør det med ren XML eller tekst, men hvis jeg ByteArraycompress dataene, dør den under ByteArrayuncompress med Det oppstod en feil dekomprimering av dataene. Ive prøvde å sette innholdstypen og mime-typen på ulike punkter, så vel som koding med Base64, men hvert forsøk ser ut til å bryte på en annen måte, og jeg får aldri samme XML-tilbake som jeg sendte inn. Må jeg bruke multipart Bør Jeg komprimerer på serveren Hva er best praksis for å gjøre dette Sende data fra AS3: Motta det i Java servlet og opprett filen: Åpne den nye filen i AS3: URLLoaderDataFormat - AS3 Angir at nedlastede data er mottatt som URL-kodede variabler . Følgende eksempel bruker URLLoaderDataFormatExample-klassen til å vise dataformat og statusinformasjon for en fil lastet ved brukstid. Dette oppnås ved å bruke følgende trinn: Klassekonstruktøren oppretter en URLLoader-instans som heter loader og en URLRequest-instans som heter forespørsel. som er plasseringen og navnet på filen som skal lastes inn. Loader-objektet overføres til configureListeners () - metoden, som legger til lyttere for hver av de støttede URLLoader-hendelsene: completeHandler (). lytter etter hele arrangementet, som sendes etter at TextFile. txt er lastet inn. openHandler (). lytter etter den åpne hendelsen, sendt ved starten av nedlastingen (til spilleren) av TextFile. txt. progressHandler (). lytter til fremdriftshendelser, sendt når data mottas når nedlastingsoperasjonen går videre. securityErrorHandler (). lytter etter securityError hendelser, som ville bli sendt hvis tekstfilen ble åpnet med feil lokal avspillingssikkerhetsinnstilling. httpStatusHandler (). lytter til httpStatusHandler hendelser, som ikke vil bli sendt i dette tilfellet siden TextFile. txt er lokal. ioErrorHandler (). lytter til ioError-hendelser, som bare ville skje hvis det var et alvorlig problem med filen, for eksempel hvis den manglet. Forespørselsobjektet sendes deretter til metoden loader. load (), som laster tekstfilen til minne ved hjelp av et DisplayObject-objekt. Merknader: Du må kompilere SWF-filen med Lokalt avspillingssikkerhetssett til Kun lokale filer. Dette eksemplet krever at en fil med navnet TextFile. txt blir plassert i samme katalog som din SWF-fil. Hvis du vil se dette eksemplet, identifiser binære eller URL-kodede datafiler, må du oppgi filen i riktig dataformat og endre TextFile. txt til navnet og plasseringen til den nye filen. kopier 2015 Adobe Systems Incorporated. Alle rettigheter reservert. Måned 12. desember 2016, 01:20 -08: 00Lading ekstern tekst i Flash ved hjelp av AS3 URLLoader Flash kan laste inn eksternt tekstinnhold i kjøretid ved hjelp av ActionScript 3 URLLoader-klassen. Lasting av ekstern tekst på kjøretid er en teknikk som brukes til å lage Flash-filmer som enkelt kan oppdateres uten å måtte gå tilbake til FLA. URLLoader-klassen er ansvarlig for å laste inn alt tekstlig innhold, og det inkluderer i tillegg til vanlige tekstfiler, XML. HTML og CSS. Teksten som vises i Flash-filmen nedenfor, er lastet fra en egen tekstfil hver gang denne SWF-en vises. Denne opplæringen vil lære deg hvordan du bruker URLLoader-klassen til å laste grunnleggende tekster og en variabel fra en tekstfil. Dette er en nybegynner ActionScript 3.0-opplæring som krever at du kun kjenner grunnleggende om hendelseshåndtering i AS3 for å kunne følge den. URLLoader brukes kun til å laste inn tekstlig innhold. Hvis du vil vite hvordan du laster inn grafisk innhold, vennligst gå gjennom AS3 Loader Class-opplæringen. Vår opplæring er delt inn i følgende små seksjoner: Innstillinger opp i Quick ActionScript 3.0-testkoden Forklaring Vise eksternt innhold i et tekstfelt Laster variabler fra en tekstfil Sette opp filene Det første trinnet i å laste inn en ekstern fil er å opprette den Lasting av en ekstern fil er død, så lenge både den eksterne filen og Flash-filmen som kaller den, ligger på samme server. For å gjøre det enda enklere og ikke bryr seg om den faktiske nettadressen, skal vi plassere både tekstfilen og Flash-filmen i samme mappe. Opprett en ny mappe for å være vert for alle filene som skal brukes i dette prosjektet. Lag i denne mappen en tekstfil med navnet myText. skriv inn tekst i denne tekstfilen og lagre den deretter. Merk for andre språk enn engelsk: Hvis du planlegger å laste inn tekst på et annet språk enn engelsk, vil du sannsynligvis bruke spesialtegn. For å sikre at tegnene dine vises riktig, må du kode inn filen din ved hjelp av Unicode. Kodingsalternativene kan vanligvis finnes i vinduet Lagre som i et tekstredigeringsprogram. Når du har lagret ditt tekstfelt, må du bare opprette en ny Flash-fil i samme mappe. Du kan navngi denne filen Text Loader, selv om dette ikke vil påvirke vårt prosjekt. Tilbake i Flash - Quick Test Vi skal starte kodingen med en gang. Høyreklikk den eneste rammen du har på tidslinjen, og velg Handlinger for å åpne handlingspanelet. Kopier og lim inn koden under for raskt å se din eksterne tekst som vises i utgangsvinduet. Forklaring vil følge. var myTextLoader: URLLoader ny URLLoader () funksjon onLoaded (e: Event): void trace (e. target. data) Du kan trykke CtrlEnter på tastaturet for å se teksten din vist tekstutskriftsvinduet Forklaring Det var en rask test bare for å vise du hvor lett det er å laste en ekstern tekstfil. Vi skal forklare i detalj nå hva den koden gjør. For å kunne bruke URLLoader-klassen må du følge fremgangsmåten beskrevet nedenfor: Opprett en forekomst av URLLoader-klassen. Bruk en Event Listener å vite når filen er ferdig lasting. Opprett Event Listener-funksjonen for å foreta tiltak når varslet av Event Listener. Bruk metoden. load () for å laste den faktiske tekstfilen. Dette er en veldig enkel prosess i ekte kode som du har sett ovenfor. Som med flertallet av ActionScript 3.0-klasser, er det første trinnet i å bruke noen av klassene å skape en forekomst av denne klassen (instantiation). Dette kan enkelt gjøres ved hjelp av den nye operatøren. Så den første linjen i koden oppretter bare en forekomst av URLLoader-klassen og heter den myTextLoader: var myTextLoader: URLLoader ny URLLoader () Vi må da registrere en hendelseslytter for å gjøre en tiltak med tekstfilen ferdig med å laste inn. Dette gjøres ganske enkelt ved å bruke. addEventListener til å registrere vår forekomst med hendelsen EventPLETE og en funksjon som heter onLoadded som vi senere definerer med handlingen som skal tas: var myTextLoader: URLLoader ny URLLoader () Du kan lære mer om hendelser ved å lese vår veiledning om hendelseshåndtering i ActionScript 3.0. Det neste trinnet er å skape den funksjonen som vil skje når den blir hørt av hendelseslytteren. Vi har tidligere angitt at denne funksjonen vil bli kalt onLoaded. Oppgaven med denne funksjonen er å sende ut innholdet av vår tekstfil på testskjermen ved hjelp av kommandoen trace (). Dataene i vår tekstfil kan nås gjennom en eiendom som heter. data knyttet til målet for vår KOMPLETE-hendelse (dvs. vår forekomst av URLLoader-klassen). Du bør merke at denne egenskapen kun kan nås når filen har lastet inn: var myTextLoader: URLLoader ny URLLoader () Den endelige linjen med utløser hele prosessen ved å laste inn tekstfilen med. load () - metoden. Metoden. load () laster faktisk webadressen til teksten du vil laste inn. Du bør være oppmerksom på at du ikke kan tildele nettadressen direkte som en streng. men i stedet må du sende den som eksempel på URLRequest-klassen som vist i koden nedenfor: var myTextLoader: URLLoader ny URLLoader () - funksjon onLoaded (e: Event): void trace (e. target. data) Du kan sjekke oppføringen for URLRequest-klassen i ActionScript-referansen for å lære mer om det. Det burde gjøre det. Du kan igjen teste filmen (CtrlEnter) for å se innholdet i tekstfilen i utgangsvinduet. Vise teksten i et tekstfelt Selv om dette ikke er en del av denne opplæringen, men jeg tenkte at jeg vil gi deg et raskt eksempel på hvordan du viser innholdet i et tekstfelt som vi lager dynamisk. Det er den samme eksakte prosedyren, men vi har også (1) å lage en forekomst av TextField-klassen. (2) sett sin. text-egenskap når filen er lastet og til slutt (3) vise den på skjermen ved å legge den til skjermlisten. Koden nedenfor viser disse tre ekstra trinnene tydelig i fet skrift. var myTextLoader: URLLoader ny URLLoader () var myTextFieldtxt: TextField ny TextField () funksjon onLoaded (e: Event): void myTextFieldtxt. text e. target. data addChild (myTextFieldtxt) Metoden addChild () legger til målobjektet i visningslisten . Hvis det brukes på hoved tidslinjen uten noen kvalifikasjon, vil det vise objektet på skjermen, hvis det brukes gjennom en gjenstand, vil det målobjektet vises når foreldreobjektet vises. Hvis du laster inn en tekststreng som overskrider en linje, må du også sette TextField-egenskapene. wrapText og. autoSize for å sikre at feltet ditt blir automatisk strekket for å vise hele teksten: var myTextLoader: URLLoader ny URLLoader () var myTextFieldtxt: TextField ny TextField () myTextFieldtxt. wordWraptrue myTextFieldtxt. autoSizeTextFieldAutoSize. LEFT-funksjonen onLoaded (e: Event): void myTextFieldtxt. text e. target. data addChild (myTextFieldtxt) Sjekk TextField Class-oppføringen i ActionScript-referansen for å lære om alt tilgjengelige egenskaper i et tekstfelt. Igjen, alt du trenger å gjøre nå er å teste filmen din til (CtrlEnter) se tekstfeltet og teksten Laster variabler fra en tekstfil I tillegg til muligheten for å laste inn en hel del tekst i Flash fra en tekstfil, er det mulig å dele opp dette tekstinnholdet i logiske stykker ved hjelp av variabler. Så hvis du for eksempel har en tekststreng som tittel, en blokk med tekst som kroppstext og en streng som inneholder en URL. Du har alle disse i en enkelt tekstfil, men har hver av dem lagret i en egen variabel. Dette kan gjøres ved å bruke samme signaturoperatør for å angi verdien av en variabel og ampersand sign-forsterkeren for å identifisere en ny variabel. Hvis du åpner vår opprinnelige tekstfil myText. du kan erstatte det opprinnelige innholdet med følgende for å se noen variabler i aksjon: myTitleOman3DampmyBodyOman3D har mange interessante tutorialsampmyURLrepublicofcode Koden ovenfor definerer tre variabler, myTitle. kroppen min . og myURL. Verdien av hver av disse variablene er spesifisert etter et like-tegn mens starten på en ny variabel (annet enn den første) er spesifisert ved hjelp av ampersand sign-forsterkeren. Her er det samme tekstfeltet med variabelnavnene og operatørene bare uthevet: myTitle Oman3D ampmyBody Oman3D har mange interessante opplæringsprogrammer ampmyURL republicofcode Så hvordan kan vi hente disse variablene ved hjelp av ActionScript Vi må først fortelle Flash Player at vi laster inn variabler og ikke enkel tekst. Dette gjøres ved å sette en egenskap av URLLoader-klassen som heter URLLoaderDataFormat. Vi stiller ganske enkelt sin verdi til URLLoaderDataFormat. VARIABLES: var myTextLoader: URLLoader ny URLLoader () myTextLoader. dataFormatURLLoaderDataFormat. VARIABLES funksjon onLaded (e: Event): void trace (e. target. data) Nå i stedet for å hente hele innholdet i. dataegenskap til målet vårt, driller vi oss dypere inn i de faktiske variablene av. data-egenskapen som vi har definert i vår tekstfil: var myTextLoader: URLLoader ny URLLoader () myTextLoader. dataFormatURLLoaderDataFormat. VARIABLES funksjon onLaded (e: Event): void trace e. target. data. myTitle) trace (e. target. data. myBody) trace (e. target. data. myURL) Ingen andre endringer kreves. Du kan nå teste filmen din (CtrlEnter) for å se hver av variablene dine som vises på en linje på egenhånd i utgangsvinduet. Bruken av denne teknikken vil variere avhengig av prosjektet du arbeider med. Imidlertid bør du alltid vurdere å bruke XML i stedet for tekstfilvariabler hvis du vil laste inn små biter av informasjon som legger til logikk for prosjektet, gir XML-klassen et mye mer omfattende sett med metoder for filtrering og søking av de lastede dataene. Dette avslutter vår veiledning. Du kan laste ned kildefilen til vårt siste eksempel her. Hvis du har kommentarer eller spørsmål, vennligst legg inn dem på Oman3D Forum. - En av opplæringen.
No comments:
Post a Comment