Introduction å ByteArray
Del
Del
Del
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
ByteArray er en ekstremt kraftig klasse som kan brukes til mange ting relatert til datamanipulasjon, inkludert (men ikke begrenset til) sparing spilldata online, kryptere data, komprimere data, og konvertere en BitmapData objekt til en PNG eller JPG-fil. I denne innledningen, vil vi bruke den ByteArray klassen til å ta en innfødt AS3 objekt og kode den til en streng som kan lagres til en server for senere oppsamling, deretter dekode det senere.
I tidligere tutorials har vi sett hvordan du bruker XML og JSON å kode data i en tekstlig (String) format. Imidlertid er både XML og JSON designet for å være lesbar, og som et resultat de er mye lenger enn de trenger å være. Det kan også være vanskelig å omdanne visse typer AS3 objektet til enten format. ByteArray har noen virkelig avanserte funksjoner, men til å begynne med, vil vi bare se på en enkel en. Det gjør det svært enkelt å snu en AS3 objekt i en String
Endelig resultat Forhåndsvisning
La oss ta en titt på det endelige resultatet vi skal jobbe mot:
Når du limer inn en kodet ByteArray streng i tekstfeltet og klikk på Load knappen, vil det dekryptere den, og vise objektegenskapene lagret i den. Du kan prøve følgende kodede ByteArrays; copy-paste dem inn i Textfield og klikk på Load knappen for å se hva jeg snakker om:
//Dette ByteArray vil vise mine data (Dette er standard ByteArray lastet) CgsBFW9jY3VwYXRpb24GB0NUTw93ZWJzaXRlBiFodHRwOi8vaWt0LmNvLmlkCW5hbWUGDVRhdWZpawE = //Dette ByteArray vil vise min nåværende thoughtCgsBIWZvb2RfZm9yX3Rob3VnaHQGgnVJIGFtIHRoaW5raW5nIG9uIHNoYXJpbmcgdGhlIHRlY2huaXF1ZSBpIHVzZWQgdG8gbWFrZSBhIEZ1bGwgRmxhc2ggRHluYW1pYyBXZWJzaXRlIFNFTyBGcmllbmRseSBmb3IgbXkgbmV4dCBUdXRvcmlhbCBpbiBBY3RpdmVUdXRzKy4uLiA8dT5XaGF0IGRvIHlvdSB0aGluaz88L3U+IDxiPmlzIGl0IGEgZ29vZCBpZGVhPC9iPj8B//This ByteArray vil snakke om Flash og SEO og min erfaring med themCgsBEXF1ZXN0aW9uBoEDPGI+PHU+Q2FuIGEgZnVsbHkgZHluYW1pYyBGbGFzaCBXZWJzaXRlIGJlIFNFTyBmcmllbmRseTwvdT48L2I+Pz8NYW5zd2VyBoM/SXQgY2FuLCBoZXJlIGlzIHRoZSBwcm9vZiwgPGEgaHJlZj0naHR0cDovL3d3dy5nb29nbGUuY28uaWQvc2VhcmNoP3E9Zmxhc2grc2VvJmllPXV0Zi04Jm9lPXV0Zi04JmFxPXQnIHRhcmdldD0nX2JsYW5rJz5odHRwOi8vd3d3Lmdvb2dsZS5jby5pZC9zZWFyY2g/cT1mbGFzaCtzZW8maWU9dXRmLTgmb2U9dXRmLTgmYXE9dDwvYT4sIGlrdC5jby5pZCBpcyByYW5rZWQgIzYgb3ZlciB0aGVyZQE=
Step 1: Opprett ny Action Prosjekt
Innenfor 'Flash Builder "-vinduet:
Åpne Flash Builder 4
Klikk på Fil
hover Ny
Klikk Action Prosjekt
Trinn 2: New ActonScript Prosjekt Setup
Innenfor 'New Action Prosjekt "vinduet:
Skriv 'TUTORIAL_ByteArray "i Prosjektnavn-feltet
Husk hvor du lagre prosjektet
Klikk" Finish "-knappen
Trinn 3:.. Base64.as
Kopier Base64.as inn i prosjektet 'com' katalog
Opprett en ny 'com' katalog inni kildekatalog
Last ned Base64.as fil fra kilden nedlasting.
Sett inn filen i den nyopprettede 'com' katalog.
Base64.as vil komme til nytte seinere. Det er av Steve Webster, som brukes til å ligge på dynamicflash.com (han forlot Flash samfunnet et par år siden)
Trinn 4:. Nødvendig Classes
I TUTORIAL_ByteArray klasse ( som er den viktigste klassen), kan du importere følgende klasser for denne opplæringen:
pakke {import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.events.MouseEvent; import flash.utils.ByteArray; import com.Base64; public class TUTORIAL_ByteArray strekker Sprite {offentlig funksjon TUTORIAL_ByteArray () {}}}
Trinn 5:. Tilvenning Flash Builder jeg
Legg til følgende kode inne TUTORIAL_ByteArray Constructor for en veldig enkel test
offentlig funksjon TUTORIAL_ByteArray () {var _test: String =; "Hei, verden!" trace (_test);}
Trykk F11 tasten for å kjøre dette prosjektet, bør du få beskjed inne i konsollen vinduet
Trinn 6:. Tilvenning Flash Builder II
La oss nå prøve å spore meldingen inne _test variabel, men denne gangen vil vi gjøre det fra en annen funksjon:
offentlig funksjon TUTORIAL_ByteArray () {var _test: String = "Hello world!"; TestFunction ();} private funksjon TestFunction (): void {trace (_test);}
Trykk CTRL + S for å lagre prosjektet. En feil oppdages etter at du har lagret prosjektet; Dette er fordi en variabel som er deklarert i en funksjon ikke vil være tilgjengelig for hvilken som helst annen funksjon. Så for denne saken, må vi erklære _test variable utenfor:
offentlig funksjon TUTORIAL_ByteArray () {TestFunction ();} private funksjon TestFunction (): void {trace (_test);} private Var _test: String = "Hello verden ";
Trinn 7: Nødvendige Private Variabler
Vennligst legg følgende private variabler for dette prosjektet:
offentlig funksjon TUTORIAL_ByteArray () {TestFunction ();} private funksjon TestFunction ( ): void {trace (_test);} private Var _test: String = "Hello World!"; privat Var _loadButton: Textfield, private Var _inputField: Textfield, private Var _testObject: Object; private Var _testByteArray: ByteArray;
< h2> Trinn 8: UI
La oss lage et enkelt brukergrensesnitt for dette prosjektet
Nå som vi trenger å vise noe inn i vårt prosjekt, må vi erklære vår scene størrelser (Sjekk Linje 13. ).
Gi nytt navn til vår TestFunction inn InitUI funksjon, og legger til følgende linje av koder inne. Vennligst les forklaringen kommen inne koden.
[SWF (width = "550", height = "400", framerate = "60", TITLE = "Tutorial ByteArray")] public class TUTORIAL_ByteArray strekker Sprite {offentlig funksjon TUTORIAL_ByteArray () {InitUI (); } Private funksjon InitUI (): void {//Initial våre textfields, slik at vi kan bruke dem _loadButton = new Textfield (); _inputField = new Textfield (); //Gi en defaultTextFormat for dem begge (Tahoma på 11pt, farget 0x777777) _loadButton.defaultTextFormat = _inputField.defaultTextFormat = new tekstformat ("Tahoma", 11, 0x777777); //Gi dem begge en grense _loadButton.border = _inputField.border = true; //Sett autosize for vår Load knappen, slik at det automatisk vil krympe /vokse til å tilpasse teksten inne _loadButton.autoSize = TextFieldAutoSize.LEFT; //Sett valgbar av vår Load knappen for å falsk, slik at brukeren ikke kan velge teksten i det _loadButton.selectable = false; //Sett linjer og wordwrap av vår Input Field til ekte, slik at en lang tekst vil automatisk pakket ned til neste linje _inputField.multiline = _inputField.wordWrap = true; //Aktiver brukeren å skrive noe inn i vår Input Field, ved å sette denne type eiendom _inputField.type = TextFieldType.INPUT; //Sett litt tekst til Begge _loadButton.text = "Load"; _inputField.text = ""; //Legg begge inn i scenen, slik at de er synlige for våre besøkende addChild (_inputField); addChild (_loadButton); //Plasser vår Input-feltet og gjøre den større _inputField.x = 25; _inputField.y = 25; _inputField.width = 200; _inputField.height = 150; //Det er en grunn til at jeg gjorde dette, slik at Load knappen er plassert rett under vårt Input Feltet //Så du kan plassere inntastingsfeltet hvor du vil, så lenge det er denne koden, vil Load knappen stikke under Input Feltet _loadButton.y = _inputField.y + _inputField.height; _loadButton.x = _inputField.x; }
Trykk F11 for å kjøre dette prosjektet og se det enkle brukergrensesnittet vi har skapt
Trinn 9:. Aktiver Interaktivitet
Les forklaringen kommen inne koden
_loadButton.y = _inputField.y + _inputField.height; _loadButton.x = _inputField.x; //Legg til en hendelse List for vår _loadButton, så når brukeren klikker på denne knappen, //Flash vil kalle _loadButton_CLICK () Metode _loadButton.addEventListener (MouseEvent.CLICK, _loadButton_CLICK, falsk, 0, true);} //Denne metoden vil kalles når brukeren klikker på _loadButtonprivate funksjon _loadButton_CLICK (Events: MouseEvent = null): void {//Få noe at brukerundersøkelser og lagre dem i vår _test variabel _test = _inputField.text; //Spore _test variable trace ("Skriv inn følgende melding:" + _test);}
Trykk F11 for å kjøre dette prosjektet; prøve å skrive noe inn i _inputField og klikk deretter på _loadButton. Dette er den mest grunnleggende teknikken for å få en variabel fra vår bruker og lagrer det i vår egen variabel.
Food for Thought
Vi har endelig nå våre viktigste trinnene i dette prosjektet , men før vi fortsetter la meg gir en mental stimulans for tenkning. For tiden i vårt prosjekt, er vi i stand til å få en streng og lagre den i vår egen variabel. Men det er bare en streng; Hva om jeg ønsker en bruker å skrive inn noe inni _inputField slik at jeg kan få en Object Vi vil fortsette sakte denne gangen, slik at du vil forstå ByteArray klassen og kunne lage din egen datamanipulasjon og bruke den til dine egne prosjekter. Vennligst les forklaringen kommen inne koden: Trykk F11 for å kjøre dette prosjektet. Se hvor enkelt det er, dette er ByteArray en ekstremt kraftig klasse og, men det er ikke vanskelig i det hele tatt. Vi har tatt en innfødt AS3 Object og konvertert det to Action Message Format. Før du sender dataene til vår PHP Script bruker GET-metoden, bør vi konvertere den til en Base64 String. Dette er fordi Base64 kan bæres av XML (og av HTML) Les forklaringen kommen i koden. Trykk F11 for å kjøre dette prosjektet. Hvis konvertere et objekt inn i en ByteArray er enkel, konvertere Byte verdien av våre data inn Base64 String er så enkelt, takket være Base64.as Vi vil prøve å dekode inngått Base64 String inn et objekt når brukeren klikker på _loadButton, endre vår _loadButton_CLICK funksjon. Vennligst les forklaringen kommen inne koden: Trykk F11 for å kjøre dette prosjektet. Vi får vår kodet Base64 String av vår _testObject inne vår _inputField; klikk på _loadButton å se vårt prosjekt konvertere dette Base64 String tilbake og vise alle sine egenskaper og verdier. Du kan prøve å kopiere og lime inn Base64 Strings i begynnelsen av denne opplæringen og lese alle mine meldinger. ByteArray Class er en ekstremt kraftig Class , og likevel er det veldig enkelt å bruke. Jeg har sett mange flotte Flash apps der ute utnytte denne ByteArray å utføre så mange tankene blåser datamanipulering, for eksempel slike som jeg nevnte i begynnelsen av denne opplæringen. Jeg har hørt mange Flash spillprogrammerere bruke XML til å lagre sine besøkende '' Save Game Data ', men som vi alle allerede vet, er XML et helvete av en svært komplisert klasse; med ByteArray jeg kan spare noe som dette LETT Ja, noe dette komplisert tar bare et par linje av koder, tenk redsel for å spare disse dataene ved hjelp av XML og hente dem tilbake for videre bruk. Alt i alt må jeg si at med Byte datamanipulasjon kan du oppnå mange ting, og noen kan være løsningen du har vært på jakt etter all denne tiden. Jeg håper du har funnet denne opplæringen nyttig. Takk for lesing!
fra det? Hva kan brukeren skrive? Svaret er en "kodet Base64 ByteArray '
Trinn 10: Introduksjon til ByteArray
offentlig funksjon TUTORIAL_ByteArray () {InitUI (); CreateByteArray ();} private funksjon CreateByteArray (): void {//Initial vår _testObject variabel, slik at vi kan fylle mange dynamiske egenskaper og lagre String data i det (vi vil laste dem senere når brukeren klikket _loadButton) _testObject = new Object (); _testObject.name = "Taufik"; _testObject.website = "< a href = 'http: //ikt.co.id'> http: //ikt.co.id< /a >"; _testObject.occupation = "CTO"; //Initial vår _byteArray variabel, slik at vi kan begynne å konvertere objektet til en ByteArray _testByteArray = new ByteArray (); //Konverter objektet inn Byte Array, Dette er hvordan du gjør det, for å konvertere et objekt til en ByteArray, er det enkelt isnt det? :)) _testByteArray.writeObject (_testObject); //Lar se om alt fungerer som det skal spore ("Vår første ByteArray opprettet ::" + _testByteArray.toString ());}
Trinn 11:. Koding ByteArray inn Base64 String
privat funksjon CreateByteArray (): void {//Initial vår _testObject variabel, slik at vi kan fylle mange dynamiske egenskaper og butikken String data i det //(vi vil laste dem senere når brukeren klikker _loadButton) _testObject = new Object (); _testObject.name = "Taufik"; _testObject.website = "< a href = 'http: //ikt.co.id'> http: //ikt.co.id< /a >"; _testObject.occupation = "CTO"; //Initial vår _byteArray variabel, slik at vi kan begynne å konvertere objektet til en ByteArray _testByteArray = new ByteArray (); //Konverter objektet inn Byte Array, Dette er hvordan du gjør det, for å konvertere et objekt til en ByteArray, er det enkelt isnt det? :)) _testByteArray.writeObject (_testObject); //Kode ByteArray inn Base64 String (slik at vi kan sende dem via PHP eller kopiere teksten til notepad), igjen det er veldig enkelt! Var kodet: String = Base64.encodeByteArray (_testByteArray); //Sett kodet Base64 String til vår _inputField (slik at vi kan kopiere dem inn i notepad) _inputField.text = kodet;}
Trinn 12:. Konvertering kodet Base64 String inn Objekt
privat funksjon _loadButton_CLICK (Events: MouseEvent = null): void {//Vi må fange opp eventuelle feil try {//Vi dekode vår kodet Base64 String til en ByteArray, slik at vi kan hente våre Object tilbake Var DecodedByteArray: ByteArray = Base64.decodeToByteArray (_inputField.text); //Hvis konvertere et objekt inn ByteArray er enkel, hente et objekt fra ByteArray er så enkelt som dette Div LoadedObject: Object = DecodedByteArray.readObject (); //Forbered å sende ut alle egenskaper og deres verdier inne i LoadedObject Var Output: String = ""; for (var VarName: String i LoadedObject) {Utgang + = VarName + ":" + LoadedObject [VarName] + "< br >"; } //Output dem i vår _inputField _inputField.htmlText = Output; } catch (err: Feil) {_inputField.text = "Vennligst skriv en kodet ByteArray inn i denne Textfield før du klikker på 'Load' Button Feilmelding ::.» + err.message; }}
Konklusjon
privat funksjon CreateByteArray (). void {_testObject = new Object (); _testObject.name = "Taufik"; _testObject.website = "< a href = 'http: //ikt.co.id'> http: //ikt.co.id< /a >"; _testObject.occupation = "CTO"; _testObject.level = 99; //Få staten med dette spillet Character Varelager Var _inventory: Array = new Array ({item_id: 5, mengde: 1} {item_id: 85, mengde: 1} {item_id: 42, mengde: 5}); _testObject.inventory = _inventory; //Får det er dyktighet de allerede nivå opp Var _skill: Array = new Array ({skill_id: 1, nivå: 0} {skill_id: 2, nivå 1}); _testObject.skill = _skill; //Initial vår _byteArray variabel, slik at vi kan begynne å konvertere objektet til en ByteArray _testByteArray = new ByteArray (); //Konverter objektet inn Byte Array, Dette er hvordan du gjør det, for å konvertere et objekt til en ByteArray, er det enkelt isnt det? :)) _testByteArray.writeObject (_testObject); //Kode ByteArray inn Base64 String (slik at vi kan sende dem via PHP eller kopiere teksten til notepad), igjen det er veldig enkelt! Var kodet: String = Base64.encodeByteArray (_testByteArray); //Sett kodet Base64 String til vår _inputField (slik at vi kan kopiere dem inn i notepad) _inputField.text = kodet;}