Opprett en QR-kodegenerator i Flash ved hjelp av AS3

QR-koder er overalt i disse dager: magasinannonser, reklametavler, til og med TV-reklamer. Sjansen er at du har en telefon i lommen som kan lese en QR-kode og dekode nettadressen eller meldingen som finnes i. I denne opplæringen lærer du hvordan du oppretter en SWF som kan reversere prosessen: opprett en QR-kode fra en nettadresse eller en melding. Les videre!


Endelig resultatforhåndsvisning

La oss ta en titt på den endelige appen vi skal jobbe for:


Trinn 1: Kort oversikt

Ved å bruke forhåndsdefinerte grafiske elementer vil vi skape et flott grensesnitt som vil bli drevet av flere ActionScript 3-klasser.

Koden vil gjøre god bruk av en QR Code Encoder klasse, laget av Jean-Baptiste Pin.


Trinn 2: Flash-dokumentinnstillinger

Åpne Flash og opprett 480 piksler bredt, 480 piksler høyt dokument. Still inn rammefrekvensen til 24fps.


Trinn 3: Grensesnitt

Et fargerikt fint utseende grensesnitt vil bli vist, dette innebærer flere former, knapper og mer.
Enkelte former ble opprettet ved hjelp av Flash-tegneverktøyene, slik at det ikke vil være nødvendig å inkludere skapelsen.


Trinn 4: Instansnavn

Bildet over viser Instansnavn brukt i movieclips. De som starter med a Stor bokstav er Biblioteksklassenavn og bør ikke være på scenen.


Trinn 5: TweenNano

Vi bruker en annen tween-motor fra standarden som følger med i Flash, dette vil øke ytelsen, så vel som å være enklere å bruke.

Du kan laste ned TweenNano fra sitt offisielle nettsted.


Trinn 6: QR Kode Bibliotek

Vi vil gjøre bruk av et fantastisk QR Code Encoder bibliotek som kan lastes ned herfra. Du kan lære mer om bruk av eksterne biblioteker i koden din med denne opplæringen.

Redaktørens notat: Bruk SWC-filen, ikke klassene i \ org \ -mappen, for å få de beste resultatene.


Trinn 7: Sett hovedklasse

Legg klassenavnet til Klasse felt i publisere delen av Eiendommer panel for å knytte FLA til hoveddokumentklassen.


Trinn 8: Opprett en ny ActionScript-klasse

Opprett en ny (Cmd + N) ActionScript 3.0-klasse og lagre den som Main.as i klassemappen din.


Trinn 9: Klassestruktur

Lag din grunnklassestruktur for å begynne å skrive koden din.

 pakke import flash.display.Sprite; offentlig klasse Hoved utvider Sprite offentlig funksjon Main (): void // constructor code

Trinn 10: Nødvendige klasser

Dette er klassene vi må importere for vår klasse for å jobbe, importere Direktivet gir eksternt definerte klasser og pakker tilgjengelig for koden din.

 importer flash.display.Sprite; importer flash.events.MouseEvent; importer org.qrcode.QRCode; importer flash.display.Bitmap; importer com.greensock.TweenNano; importer com.greensock.easing.Expo;

Trinn 11: Variabler

Dette er variablene vi skal bruke, les kommentarene i koden for å få vite mer om dem, noen av navnene deres er selvklart, så det blir ingen kommentar der.

 private var textView: TextView; privat var smsView: SMSView = ny SMSView (); private var emailView: EmailView = new EmailView (); privat var linkView: LinkView = ny LinkView (); private var lastView: Sprite; privat var currentTarget: String; // nåværende streng for å konvertere privat var qrImg: Bitmap;

Trinn 12: Konstruktør

Konstruktøren er en funksjon som kjører når et objekt er opprettet fra en klasse, denne koden er den første som skal utføres når du lager en forekomst av et objekt eller kjører ved hjelp av dokumentklassen.

Det kaller de nødvendige funksjonene for å starte appen. Kontroller disse funksjonene i de neste trinnene.

 offentlig sluttfunksjon Main (): void addTextView (); addListeners (); 

Trinn 13: Legg til tekstvisning

Den første funksjonen som utføres av konstruktøren. Det vil instantiere TextView og legge det til scenen. Dette blir standardvisningen som skal vises ved å starte programmet. Det inkluderer en samtale for å fjerne den nåværende synlige visningen (i tilfelle det er en) og utfører også en Tween som en detalj i grensesnittet.

 privat endelig funksjon addTextView (): void removeLastView (); textView = ny tekstvisning (); textView.x = scene.stageWidth * 0,5; textView.y = 110; addChild (textView); TweenNano.from (textView, 0.5, y: textView.y - 10, alpha: 0, ease: Expo); lastView = textView; 

Trinn 14: SMS-visning

Denne koden håndterer SMSView-posisjonen og animasjonen. Det kalles når SMS-knappen er trykket.

 privat endelig funksjon addSMSView (): void removeLastView (); smsView = ny SMSView (); smsView.x = scene.stageWidth * 0,5; smsView.y = 150; addChild (smsView); TweenNano.from (smsView, 0.5, y: smsView.y - 10, alpha: 0, letthet: Expo); lastView = smsView; 

Trinn 15: E-postvisning

EmailView-koden. Den vil plassere og animere denne utsikten på scenen.

 privat endelig funksjon addEmailView (): void removeLastView (); emailView = ny e-postvisning (); emailView.x = stage.stageWidth * 0,5; emailView.y = 155; addChild (email); TweenNano.from (emailView, 0.5, y: emailView.y - 10, alpha: 0, letthet: Expo); lastView = emailView; 

Trinn 16: Linkvisning

Dette er den endelige fanen, den fjerner den siste synlige visningen og legger til LinkView til scenen.

 privat endelig funksjon addLinkView (): void removeLastView (); linkView = ny LinkView (); linkView.x = scene.stageWidth * 0,5; linkView.y = 110; addChild (linkView); TweenNano.from (linkView, 0.5, y: linkView.y - 10, alpha: 0, ease: Expo); lastView = linkView; 

Trinn 17: Fjern siste visning

Denne funksjonen fjerner den synlige visningen fra scenen og frigjør den for søppelsamling.

 privat endelig funksjon removeLastView (): void if (lastView! = null) removeChild (lastView); lastView = null; 

Trinn 18: Legg til lyttere

Den neste koden knytter knappene til de tilsvarende funksjonene. Dette vil aktivere den flippbaserte navigeringen.

 privat endelig funksjon addListeners (): void abcBtn.addEventListener (MouseEvent.MOUSE_UP, indicatorHandler); smsBtn.addEventListener (MouseEvent.MOUSE_UP, indicatorHandler); emailBtn.addEventListener (MouseEvent.MOUSE_UP, indicatorHandler); linkBtn.addEventListener (MouseEvent.MOUSE_UP, indicatorHandler); refreshBtn.addEventListener (MouseEvent.MOUSE_UP, refreshCode); 

Trinn 19: Indikatorhåndterer

Indikatoren MovieClip er den lille pilen som viser den aktive kategorien. Denne funksjonen plasserer den i riktig posisjon og kaller kategorien funksjon.

 privat endelige funksjonsindikatorHandler (e: MouseEvent): void indicator.x = e.target.x; bytt (e.target.name) case 'abcBtn': addTextView (); gå i stykker; saken 'smsBtn': addSMSView (); gå i stykker; tilfelle 'emailBtn': addEmailView (); gå i stykker; tilfelle 'linkBtn': addLinkView (); gå i stykker; standard: spor ('Knappnavn Feil'); 

Trinn 20: Oppdater QR-kode

Denne funksjonen vil kjøre når Oppdater knappen er trykket, den bestemmer gjeldende streng for å konvertere og QRObject kode () metode for å generere en bitmap som neste blir lagt til scenen.

 privat endelig funksjon refreshCode (e: MouseEvent): void switch (lastView) case textView: currentTarget = textView.textTF.text; gå i stykker; saken smsView: currentTarget = 'SMSTO:' + smsView.phoneTF.text + ':' + smsView.contentTF.text; gå i stykker; case emailView: currentTarget = 'SMTP:' + emailView.toTF.text + ':' + emailView.subjectTF.text + ':' + emailView.bodyTF.text; gå i stykker; case linkView: currentTarget = linkView.linkTF.text; hvis (currentTarget.indexOf (': //') == -1) currentTarget = 'http: //' + currentTarget; // automatisk legge til http: // til forsiden av koblinger hvis nødvendig break; standard: spor ('Målfeil');  hvis (qrImg! = null) removeChild (qrImg); qrImg = null;  var qrObj: QRCode = ny QRCode (); qrObj.encode (currentTarget); qrImg = ny Bitmap (qrObj.bitmapData); qrImg.x = scene.stageWidth * 0.5 - (qrImg.width * 0.5); qrImg.y = 300 - (qrImg.height * 0.5); addChild (qrImg); TweenNano.from (qrImg, 1, ala: 0, letthet: Expo); 

Konklusjon

Bruk dette programmet til å generere dine egendefinerte QR-koder og husk å utforske kildefilene.

Jeg håper du likte denne opplæringen, takk for å lese!