Lag en Nifty Polaroid Photo Viewer Med Flash og Photoshop

Create en Nifty Polaroid Photo Viewer Med Flash og Photoshop
Del
Del
5
Del

Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

Noen gang ønsket å lage en håndterlig og vakre fotofremviser app? I denne opplæringen, vil jeg vise deg hvordan å designe og kode en kjekk liten Polaroid fotofremviser, med fokus på design og tweening.




Endelig resultat Forhåndsvisning

La oss ta en titt på det endelige resultatet vi skal jobbe mot:



Seksjon 1: Organisering

I denne delen vil vi diskutere vår mappestrukturen, også vi vil tilegne lager bilder



Trinn 1:. Opprette Våre Mapper

Først la oss lage en mappe der vårt prosjekt vil bli plassert. Vi vil name it "Polaroid Viewer"

Etterpå bare kopiere denne mappestrukturen.

Trinn 2: Forstå Vår mappestruktur

Når du oppretter veldig visuelle prosjekter, er det svært viktig å først virkelig vet hva du ønsker å designe. Inni Design mappen jeg alltid har mine visuelle konsepter og også i Design mappen jeg redigere bildene jeg trenger for et prosjekt.

Etter at jeg er ferdig med å jobbe på mitt konsept jeg fortsette å lage en fungerende produkt , jeg gjør dette inne i prosjektmappen. Inne i prosjektet mappen er veldig kjent bin, lib og src mappestruktur:

bin. Alt som blir eksportert, og er nødvendig for å lansere det endelige produktet, inkludert data eiendeler

lib. Våre Flash dokumenter

src. All vår kode, våre egne klasser, samt andre rammer



Trinn 3: Innhente Stock Imagery Anmeldelser

Nå som vi har laget våre mapper, la oss gå videre til bildene. I denne opplæringen vil vi trenger minst to bilder:

En polaroid ramme

Et bilde av et tregulv

Du trenger en Stock Xchange-konto for å laste ned disse bildene, hvis du ennå ikke har en, bør du registrere deg! Det er et nettsted fylt med gratis lager bilder!

Klikk på lenkene for å laste ned bildene, etterpå lagre eller flytte dem til vår design mappe.

Også vi trenger bilder til å plassere inne
polaroid rammer. Her er en liste over bilder som jeg har brukt, men gjerne bruke dine egne bilder.

  • Bilde # 1

    Bilde # 2

    Bilde # 3


    Seksjon 2: Design

    I denne delen skal vi redigere våre lager bilder. Når du gjør dette, vil vi importere disse bildene inne i vårt Flash dokument, som vi skal lage senere.

    Vi kommer til å redigere våre bilder med Photoshop, vil jeg bruke CS5, men du kan alltid bruke eldre versjoner. Hvis du ikke er så trygg på dine Photoshop ferdigheter, kan du laste ned bildene som jeg allerede har redigert. Bare laste ned kildefilene fra denne opplæringen, og du kan finne bildene inne i Redigerte Images mappen



    Trinn 4:. Forbereder Vår tregulvet

    I den siste eksempel alle våre polaroid bilder ligge på et tregulv. Vi nå kommer til å lage denne bakgrunnen.

    Opprett et nytt dokument i Photoshop
    med dimensjoner 600x600px.

    Legg tre tekstur bildet til dokumentet. Skalere det slik at du er fornøyd med det endelige resultatet.

    Jeg har også lagt til en Gradient Map, sette fargene til svart og hvitt.

    Til slutt har jeg endret kartet gradient overgang til 80%. For å gjøre dette, klikk på en av de lavere piler, og etterpå klikk på prikken i midten av graderingen. Dra denne prikk til 80%.

    Og voila! Vi har laget våre tre bakgrunnen! Lagre det som en Photoshop Document (.psd) i vår design-mappen, og gi den navnet Background.psd



    Trinn 5:. Klar Polaroid Frame

    Vi ønsker å plassere våre egne bilder inne i polaroid ramme. Vi må gjøre to ting, vil vi først må fjerne polaroid ramme fra sin (hvit) bakgrunn, og også vi må kutte "bildet" del unna.

    For å gjøre dette, vi ' vil først opprette en ny 600x600px Photoshop-dokument. Lim polaroid bilde i dokumentet, skalere det ned til den passer.

    Hvorfor har vi skalere bildet ned? Fordi vi skaper et 600x600px Flash dokument, og det er unødvendig å ha og laste et stort bilde hvis vi ikke vil selv skalere det større enn 600 px



    Trinn 6:. Isolere Polaroid Frame

    Velg penneverktøyet (P) og klikk rundt polaroid rammens ytterkant. Når du arbeider med pennverktøyet, må du huske å sette Pen verktøyet i sin Paths modus.

    Trykk Ctrl + Enter (Windows) eller Cmd + Enter (Mac) for å velge din nåværende banen.

    Med din sti valgt, klikk på "Legg til lagmaske" -knappen. Vi har nå isolert polaroid fra sin bakgrunn



    Trinn 7: Kutte Photo Part bort fra Polaroid Frame

    Dette trinnet er svært lik Design Trinn 4. Igjen velger penneverktøyet, og klikk rundt den indre delen av polaroid ramme. Etterpå velger den nåværende banen med Ctrl + Enter /Cmd + Enter.

    Nå Alt-klikk på masken i Lag-panelet. Du nå redigerer masken direkte.

    Velg markeringsverktøyet (M). Høyreklikk valget ditt og velg Fill > Svart.

    Alt-klikk igjen på masken ikon, for å vende tilbake til vår "normal" Layer visning. Vi har nå redigert vår maske og nå vår polaroid er klar til bruk. La oss lagre bildet som en Photoshop-dokument (.psd), har jeg kalt min dokumentet Polaroid.psd



    Seksjon 3:. Flash

    I denne delen er vi (endelig ) kommer til å bruke Flash. Vi kommer til å sette vårt Flash dokument som skal brukes i mappen bin
    for eksport, og mappen src
    for vår kode. Tid for å åpne Flash



    Trinn 8: Lage Vår Flash Document

    Opprett en ny Flash-dokument (Actionscript 3.0) med Flash Professional. Still dimensjonene til 600x600px og bildefrekvens til 24 fps. Sett Document klasse til Main. Også endre bakgrunnen til svart (# 000000). Lagre den som "Polaroid.fla"
    inne i lib
    mappe



    Trinn 9:. Endre Vår Publish Settings

    Etterpå går til fil > Publish Innstillinger, endre Polaroid.swf til ../bin /Polaroid.swf
    , kan du fjerner HTML alternativet. Nå er alt vi eksporterer (bare en SWF) vil være i bin mappen. Ikke lukk Publish Settings vinduet



    Trinn 10:. Endre Vår Kilde Sti

    Klikk på fanen Flash
    . Etterpå klikk på Innstillinger knappen
    ved siden av Script: Actionscript 3.0

    Nå kan vi endre kildebane.. Du vil se en mappe ikon med teksten "."
    , Endre det til "../src"
    .

    Flash vil bruke src
    mappe for alle sine klasser



    Trinn 11:. Importere Våre Grafikk til Flash

    Det er nå på tide å begynne å importere våre grafikk på vårt Flash Document. Hvis du hadde noen problemer med bildene, kan du alltids laste ned kildefilene fra denne opplæringen på toppen. Det vil være en mappe som heter "Redigerte bilder»
    , inne vil det være det redigerte bilder som du kan bruke.

    Opprett en ny Flash-dokument (Actionscript 3.0) med Flash Professional. Still dimensjonene til 600x600px og bildefrekvens til 24 fps. Også endre bakgrunnen til svart (# 000000).

    Vi har lagret bildene våre som PSD-filer fordi de jobber så mye med andre Adobe-produkter, som Flash. Når du har opprettet vår dokument, velger du Fil > Importer til bibliotek og velge Polaroid.psd og Background.psd. Når du gjør dette biblioteket vårt ser slik ut:



    Trinn 12: Lage vår bakgrunn Sprite

    Drag Background.psd fra Biblioteket til scenen vår, etterpå konvertere den til et filmklipp. Name it Bakgrunn, og merk "Export for Action"
    . Sett base klassen til flash.display.Sprite. Når du har gjort det, kan du fjerne bakgrunnen igjen fra scenen.

    Hvorfor har jeg satt Bakgrunn base klassen til Sprite stedet for standard base klasse MovieClip? Fordi den eneste forskjellen mellom en MovieClip og en Sprite er at movieclips kan inneholde flere rammer, og Sprites kan ikke. Vi trenger ikke flere rammer for vår bakgrunn, så la oss sette foten klasse Bakgrunn for Sprite



    Trinn 13:. Opprette og Vår Polaroid filmklipp

    Akkurat som vi gjorde med vår bakgrunn, dra polaroid.psd fra Libary til vår scene. Konvertere den til et filmklipp og gi den navnet Polaroid, igjen sjekk Eksporter for Action
    boks. Sett base klassen til flash.display.Sprite



    Trinn 14:. Opprette Vår Polaroid sin Layers

    Vår Polaroid er fortsatt på det stadiet, dobbeltklikk på den, slik at vi kan redigere den. Så langt Polaroid har bare ett lag, endre navn på dette laget til Polaroid Frame
    .

    Lag to nye lag, navngi dem Mask Hotell og Bilde Holder
    .



    Trinn 15: Lage bilde Holder

    Vår Polaroid vil inneholde et bilde, dette bildet skal vises et sted, vil dette bli gjort i et filmklipp som heter " Bilde Holder "
    .

    Tegn et rektangel på ca. størrelsen som" photo område "av polaroid, gjør dette i bilde Holder
    lag. Det spiller ingen rolle hvilken farge rektangelet vil bli. Etter å ha laget denne rektangel, konvertere den til et filmklipp, name it "Image Holder"
    .

    Gi Bilde Holder en forekomst navn imageHolder.



    Trinn 16: Legge til en maske til bilde Holder

    Bilde Holder vil inneholde bilder som vi vil laste. Noen ganger er disse bildene er for store - ta for eksempel en 400x100px bildet; Dette bildet er for bredt, og dets kanter vil strekke seg ut av polaroid. Vi ønsker å hindre dette. Derfor må vi skjule alle bildene som strekker seg utenfor bilde Holder område.

    For å gjøre dette, må vi skape et maske
    . En maske forteller et lag som del skal vises, og hvilken del skal skjules.

    Hvis vi ønsker hvert bilde skal vises inne Bilde Holder, uten kanter som stikker ut, bør vi sette masken størrelse til samme dimensjoner som Bilde Holder seg selv.

    Kopier bilde Holder, og lim den på plass med Ctrl + Shift + V (Windows) /Cmd + Shift + V (Mac) på laget Mask
    . Etterpå bryte kopierte bildet Holder med Ctrl + B (Windows) /Cmd + B (Mac).

    Til slutt må vi fortelle vår Mask
    lag som det er en maske. Høyreklikk på layer mask og velg alternativet Mask



    Seksjon 4:. Kode

    Det er på tide å starte koding, hvis du hadde noen problemer med Flash §
    , kan du bare kopiere mappen Flash Section Completed
    . Inni denne mappen er alt du trenger for å begynne å følge disse trinnene



    Trinn 17:. Opprette en XML-fil

    For å laste bildene våre, vi kommer til å bruke en XML-fil. XML-filen vil fortelle produktet vårt hvor bildene ligger

    Åpne en teksteditor og skriv følgende:
    < bilder >. < bilde > < fil > IMAGE_1.jpg < /fil > < /bilde > < bilde > < fil > IMAGE_2.jpg < /fil > < /bilde > < bilde > < fil > IMAGE_3.jpg < /fil > < /bilde > < /bilder >

    Du bør endre IMAGE_1.jpg, IMAGE_2.jpg, etc. til reelle filnavn, som henviser til bildene som ligger inne i bin
    mappe. Hvis du ikke har noen bilder, laste ned bilder som jeg nevnte i trinn 3.

    Lagre denne XML-filen som images.xml
    inne i bin
    mappe .



    Trinn 18: Hvilke klasser trenger vi

    Før vi begynner koding, er det viktig å vite hvilke oppgaver vårt prosjekt må gjøre:

    Vi må laste bildene våre fra en XML-fil.

    Vi må vise disse bildene inne i en Polaroid.

    Vi må hindre andre Polaroids fra zoomer inn når vi er allerede
    zoomet inn på en Polaroid.

    For å kode alle disse funksjonene i en klasse ville gjøre at klassen ekstremt komplekst, er det bedre å skille hver oppgave til en annen klasse.

    ImageLoader Vil laste XML-filen og pass på bildene for å PolaroidHolder

    PolaroidHolder. Når den mottar bildene, vil det skape et Polaroid for hvert bilde, slik at det også gjør at bare en
    Polaroid er zoomet inn på et tidspunkt

    Polaroid. Bildet vil bli vist i denne klassen



    Trinn 19:. Opprette Vår viktigste klassen

    Den største klassen er den klassen som Polaroid.fla anrop når det blir satt i gang.

    Opprett en ny Actionscript-fil og gi den navnet "Main.as"
    , lagre det inni src mappen. Den største klassen ser ut som følger
    pakke {import flash.display.MovieClip.; public class Hoved strekker MovieClip {offentlig funksjon main (): void {}}}

    Det er så tomt fordi vi først må skape våre andre klasser, mens vi er opptatt vi kommer til å holde på å legge koden til hoved . klasse



    Trinn 20: Explaining absolutte og relative filbaner

    I dette prosjektet skal vi legge i flere eiendeler: en xml fil og ulike bilder. Vi kan bruke relative filbaner
    eller absolutte stier
    . La meg forklare forskjellen med et eksempel; Vi har følgende mappestruktur:

    Loader.swf må laste bilde1.jpg. Fra sin nåværende posisjon
    Loader.swf må "åpne" bildekatalogen og last bilde1.jpg. Vi forteller Loader.swf å laste images /bilde1.jpg
    . Denne typen lasting kalles relative filbanen lasting
    , fordi url er forhold
    til Loader.swf nåværende posisjon.

    Så hvordan legger du bilde1.jpg, uansett hvor Loader.swf ligger? Dette gjøres med absolutte filbanen lasting
    . Filen Stien starter fra øvre kjerne, fra roten. Hvis det er på en datamaskin, er roten en harddisk. Vi distribuerer vårt prosjekt på nettet, så roten ville være stedet serveren



    Trinn 21:. Hvorfor vi trenger Absolutte filbaner

    Når prosjektet vårt er ferdig, vil vi liker å distribuere det. Mest sannsynlig vil det være innebygd i en HTML-side. Det er ett lite problem. Hvis Loader.swf ønsker å laste, vil det belaste fra gjeldende plassering, fra plasseringen av HTML-siden. Vi ønsker ikke dette, og derfor må vi bruke absolutte filbanen lasting.

    Nå kommer det største problemet, vil vi ikke vite plasseringen av HTML-fil. Vi må finne den absolutte
    banen til SWF-fil og redigere den veien slik at vi kan legge våre bilder.

    Vi kan få den absolutte banen til SWF-fil med roten. loaderInfo.url

    Det er på tide å lage vår ImageLoader klasse



    Trinn 22:.. Opprette Vår ImageLoader Class

    Opprett en ny Actionscript-fil og gi den navnet ImageLoader.as
    , lagre den inne i .src mappen. Klassen ser slik ut, det har blitt grundig kommen:
    pakken {//importerer de klassene vi trenger importere flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; import flash.display.Loader; import flash.display.Bitmap; import flash.display.Sprite; public class ImageLoader strekker Sprite {//vil laste vår xml private Var xmlLoader: URLLoader = new URLLoader (); //lagrer xml private Var xml: XML; //en liste over filbaner til bilder private Var imageFileList: XMLList; //banen til SWF-fil private Var swfPath: String; //prosjektet mappebanen (der mappene bin, src og lib befinner seg) private Var projectPath: String; //vi må vite tittelen på prosjektet vårt, slik at vi kan redigere .swf url for å få vår projectPath private Var projectTitle: String; //vi trenger å telle hvor mange bilder vi allerede har lastet privat Var count: uint = 0; //vi må lagre bildene, bildene er bitmaps offentlig Var bilder: Vector < Bitmap >. = New Vector <. Bitmap >; offentlig funksjon ImageLoader (_projectTitle: String) {//vi må vite når ImageLoader har blitt lagt til, så vi kan finne ut hva roten url er addEventListener (Event.ADDED, whenAdded); //lagre prosjektets tittel projectTitle = _projectTitle; //når imageLoader er gjort med lasting, ring xmlLoaded xmlLoader.addEventListener (Event.COMPLETE, xmlLoaded); } Private funksjon whenAdded (hendelse: Hendelse): void {//lagre swf banen swfPath = root.loaderInfo.url; //få vår projectPath projectPath = swfPath.substr (0, swfPath.length - projectTitle.length); } //Denne funksjonen vil laste inn bilder fra en xml, og oppbevar bildene offentlig load funksjon (url: String): void {//laste xml, som vi trenger for å laste bildene xmlLoader.load (ny URLRequest ( projectPath + url)); } Private funksjon xmlLoaded (hendelse: Hendelse): void {//lagre xml, som xmlLoader har lastet xml = new XML (event.target.data); //lagre alle filkoblinger i en XMLList imageFileList = new XMLList (xml.image.file); //nå som vi har filinformasjonen, kan vi laste inn bilder loadImages (); } Private funksjon loadImages (): void {for hver (var imageFile: String i imageFileList) {//oppretter Var imageLoader: Loader = new Loader (); //når et bilde har blitt lastet, ring imageLoaded imageLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, imageLoaded, falsk, 0, true); imageLoader.load (ny URLRequest (projectPath + imageFile)); }} Privat funksjon imageLoaded (hendelse: Hendelse): void {//vi teller hvor mange bilder vi har allerede lastet, vi har nettopp lastet (annen) en teller ++; //få bildet Bitmap Var bilde: Bitmap = Bitmap (event.target.loader.content); //lagre bildet i våre bilder Vector images.push (image); //hvis dette er det siste bildet vi trengte å laste if (count == imageFileList.length ()) {//vi er ferdig, sende en hendelse dispatchEvent (ny hendelse ('imagesLoaded')); } //- Opprydding //losse loader event.target.loader.unload (); } Offentlig funksjon opprydding (): void {xmlLoader.data = null; xmlLoader = null; xml = null; imageFileList = null; teller = 0; bilder = null; }}}



    Trinn 23:. Forbedre Vår viktigste klassen

    Nå som vi har vår ImageLoader klasse, kan vi forbedre vår viktigste klassen
    pakke {import flash.display.MovieClip; import flash.events.Event; public class Hoved strekker MovieClip {//en tilpasset klassen vi har gjort noe som vil laste inn alle bildene fra en xml fil som punktgrafikk privat Var imageLoader: ImageLoader; //denne klassen vil holde og vise alle våre Polaroids private Var polaroidHolder: PolaroidHolder; offentlig funksjon main (): void {//laste bildene våre, gi imageLoader navnet på SWF-fil, slik at den kan laste bruker absolutte stier imageLoader = new ImageLoader ('Polaroid.swf'); addChild (imageLoader); imageLoader.addEventListener ('imagesLoaded', displayImages, falsk, 0, true); imageLoader.load ('pictures.xml'); } Private funksjon displayImages (event: Aktivitet): void {//vi har lastet alle bildene våre polaroidHolder = new PolaroidHolder (imageLoader.images); addChild (polaroidHolder); //også rydde opp i imageLoader imageLoader.cleanUp (); imageLoader = null; }}}



    Trinn 24: Lage Vår PolaroidHolder Class

    PolaroidHolder får du bildene som en vektor. Etter å ha mottatt bildene, vil det skape et Polaroid for hvert bilde. La oss lage vår PolaroidHolder Klasse:
    pakke {import flash.display.MovieClip; import flash.display.Bitmap; import flash.events.MouseEvent; public class PolaroidHolder strekker MovieClip {//denne vektoren vil holde alle våre Polaroids offentlig Var polaroids. Vector < Polaroid > = New Vector. ≪ Polaroid >; //med denne variabelen vi ingen private Var zoomedIn: Boolean; //Polaroid vi zoomet inn på privat Var currentPolaroid: Polaroid; offentlig funksjon PolaroidHolder (bilder. Vector < Bitmap >) {//Konstruktør kode for hver (var bilde: Bitmap i bilder) {//oppretter et nytt Polaroid Var polaroid: Polaroid = new Polaroid (image); //posisjon og roter det polaroid.x = Math.random () * 200 + 100; polaroid.y = Math.random () * 200; polaroid.rotation = Math.random () * 60-30; //legge en klikke eventListener polaroid.addEventListener (MouseEvent.CLICK, onPolaroidClick); addChild (polaroid); //legge det til polaroids vektor polaroids.push (polaroid); }} Privat funksjon onPolaroidClick (event: MouseEvent): void {//det har vært et klikk på en Polaroid! if (currentPolaroid == null) {//ingen currentPolaroid er satt, vi zoomer inn //sette klikket Polaroid som gjeldende Polaroid currentPolaroid = event.currentTarget som Polaroid; //mute alle andre Polaroids (de som ikke er zoomet inn) for hver (var polaroid: Polaroid i polaroids) {if (! polaroid = currentPolaroid) {polaroid.mute (); }}} Else {//sjekke om klikk var på gjeldende polaroid if (event.currentTarget == currentPolaroid) {//samme polaroid har blitt klikket (igjen), tid for å zoome ut //oppheve dempingen alle andre Polaroids, de kan svare igjen til hendelser for hver (var polaroid: Polaroid i polaroids) {if (polaroid = currentPolaroid!) {polaroid.unmute (); }} //Nå vi ikke er zoomet inn, slik at vi ikke har en gjeldende polaroid currentPolaroid = null; }}}}}

    I linjene 50 og 62, vi kaller den fungerer mute () og fjern demping (). Demp gjør Polaroid nummen til alle hendelser, vil det ikke svare på muse overs, eller klikk. Det er nettopp det vi ønsker når vi zoomet inn. Vi ønsker ikke annet Polaroids å gjøre noe
    . Etter vi zoomer ut, vil vi Polaroids å reagere på hendelser; ved å ringe på lyden, vil Polaroids svare igjen til muse overs og klikk



    Trinn 25:. Opprette Vår Polaroid Class

    Nå er det tid for å lage vår mest interessante klasse, vår Polaroid klasse ! For denne klassen trenger vi den populære tweening bibliotek tweener. Last den ned og lagre biblioteket inne i src mappen (se denne guiden for mer informasjon)
    pakke {import flash.display.MovieClip.; import flash.events.MouseEvent; import caurina.transitions. *; import caurina.transitions.properties. *; import flash.display.Bitmap; import flash.events.Event; public class Polaroid strekker MovieClip {//skalaen hvor Polaroid er zoomet inn private statisk konst ZOOMED_IN_SCALE: Number = 1; //skalaen hvor Polaroid er zoomet ut private static konst ZOOMED_OUT_SCALE: Number = 0,6; //maks høyde et bilde kan være private Var IMAGE_MAX_HEIGHT: Number; //maks bredde et bilde kan være private Var IMAGE_MAX_WIDTH: Number; //vi må skalere lastet bilder, husk skalaen private Var skala: Number; //når vi zoomer ut, zoomer vi ut tilbake til Polaroid sin opprinnelige posisjon og rotasjon //Polaroid opprinnelige x koordinat. private Var origX: Number; //vi trenger også den opprinnelige y koordinere private Var origY: Number; //lagre Polaroid opprinnelige rotasjon private Var origRotation: Number; //når dette boolsk blir oppfylt, vil Polaroid ikke svare på mus hendelser private Var dempet: Boolean; //vi trenger å vite om Polaroid har vært klikket offentlig Var klikket: Boolean; offentlig funksjon Polaroid (bilde: Bitmap) {//gjør Polaroid en knapp buttonMode = true; //maksimumsmålene for et bilde er begrenset av dimensjonene imageHolder IMAGE_MAX_HEIGHT = imageHolder.height; IMAGE_MAX_WIDTH = imageHolder.width; //skalere Polaroid ned scaleX = ZOOMED_OUT_SCALE; Scaley = ZOOMED_OUT_SCALE; //vi må endre størrelsen på bildet slik at det passer //først sjekke om det er en stående eller liggende if (image.width > image.height) {//det er et landskap //omfanget er begrenset av bildets høyde skala = IMAGE_MAX_HEIGHT /image.height; } Else {//det er et portrett //omfanget er begrenset av bildets bredde skala = IMAGE_MAX_WIDTH /image.width; } //Skalere bildet image.scaleX = skala; image.scaleY = skala; //legge det skalerte bildet imageHolder.addChild (image); //legge hendelsen lyttere til Polaroid; addEventListener (MouseEvent.MOUSE_OVER, onMouseOver); addEventListener (MouseEvent.MOUSE_OUT, onmouseout); addEventListener (MouseEvent.CLICK, onClick); addEventListener (Event.ADDED, whenAdded); } Offentlig funksjon mute (): void {//kaller denne funksjonen vil gjøre Polaroid ikke svare på hendelser buttonMode = false; dempet = true; } Offentlig funksjon på lyden (): void {//kaller denne funksjonen vil gjøre Polaroid svare på hendelser buttonMode = true; dempet = false; } Private funksjon whenAdded (hendelse: Hendelse): void {//lagre Polaroid opprinnelige koordinater og rotasjon origX = x; origY = y; origRotation = rotasjon; //vi trenger ikke denne hendelsen lytteren lenger, ta det removeEventListener (Event.ADDED, whenAdded); } Private funksjon onMouseOver (event: MouseEvent): void {//bare svare hvis Polaroid ikke har blitt dempet hvis {//bare svare hvis Polaroid ikke har blitt klikket, klikket Polaroids bør ikke svare på muse overs (dempet!). if (! klikket) {//flytte polaroid til forsiden parent.setChildIndex (dette, parent.numChildren - 1); //flytte og slå polaroid i en tilfeldig retning Tweener.addTween (dette, {x: origX + Math.random () * 30 - 15, y: origY + Math.random () * 30 -15, rotasjon: origRotation + Math.random () * 20-10, tid: 1}); }}} Privat funksjon onmouseout (event: MouseEvent): (! Dempet) void {//bare svare hvis Polaroid ikke har blitt dempet hvis {//bare svare hvis Polaroid ikke har blitt klikket if (! Klikket) {//flytte polaroid tilbake til sin opprinnelige posisjon og rotasjon Tweener.addTween (dette, {x: origX, y: origY, rotasjon: origRotation, tid: 1}); }}} Privat funksjon onClick (event: MouseEvent): void {//bare svare hvis Polaroid ikke har blitt dempet hvis {//hvis det ikke har blitt klikket før if (klikket!) {//Vi (dempet!) har blitt klikket, la oss gjøre det sant klikket = true; //vi zoomer inn, la oss sende en hendelse (Main vil plukke dette opp) dispatchEvent (ny hendelse ('Zoomin')); //zoome Polaroid inn til sentrum av scenen Tweener.addTween (dette, {x: stage.stageWidth /2 - bredde /2, y: stage.stageHeight /2 - høyde /2, rotasjon: 0, scaleX: ZOOMED_IN_SCALE , Scaley: ZOOMED_IN_SCALE, tid: 1}); } Else {//vi allerede har blitt klikket, så gjør klikket falsk klikket = false; //vi zoomer ut, la oss sende en hendelse (Main vil plukke dette opp) dispatchEvent (ny hendelse ('zoomout')); //zoome polaroid ut, tilbake til sin opprinnelige posisjon Tweener.addTween (dette, {x: origX, y: origY, rotasjon: origRotation, scaleX: ZOOMED_OUT_SCALE, Scaley: ZOOMED_OUT_SCALE, tid: 1}); }}}}}



    Trinn 26:. Legge Vår PolaroidHolder til vår viktigste Class

    Gjør de endringene som vist i koden under
    pakke {import flash.display.MovieClip; public class Hoved strekker MovieClip {//en tilpasset klassen vi har gjort noe som vil laste inn alle bildene fra en xml fil som punktgrafikk privat Var imageLoader: ImageLoader; private Var polaroidHolder: PolaroidHolder; offentlig funksjon main (): void {//legger vår imagges imageLoader = new ImageLoader (); imageLoader.addEventListener ('imagesLoaded', displayImages, falsk, 0, true); imageLoader.load ('pictures.xml'); } Private funksjon displayImages (event: Aktivitet): void {//vi har lastet alle bildene våre polaroidHolder = new PolaroidHolder (imageLoader.polaroids); addChild (polaroidHolder); //også rydde opp i imageLoader imageLoader.cleanUp (); imageLoader = null; }}}



    Trinn 27: Resultatet hittil

    Det ser ut til å fungere, men det er ikke veldig interessant. Når du zoomer inn, blir brukeren ikke "trukket inn", vårt produkt er ikke engasjerende nok. Det vi trenger er en bakgrunn! Ved en tilfeldighet opprettet vi en i Trinn 4
    . Tid for å legge vår bakgrunn



    Trinn 28:!. Legge Vår Bakgrunn

    Vi hadde eksportert vår bakgrunn med klassen Bakgrunn

    Ikke bare vil vi legge Bakgrunn som et barn av Main, vil vi også gjøre Bakgrunn mørkere når vi zoomet inn, og lysere når vi er zoomet ut. Hvordan gjør vi dette? Når en Polaroid klikkes, sender det et eget arrangement, ZoomIn eller ZoomOut. Vi kan spore denne hendelsen, bare legge hendelsen lyttere til vår hovedklassen, de vil plukke opp Zoomin og zoomout hendelser, og når de er plukket opp, kan vi fortelle vår Bakgrunn til lysere eller mørkere:
    pakke {import flash.display.MovieClip; import flash.events.Event; import caurina.transitions. *; import caurina.transitions.properties. *; public class Hoved strekker MovieClip {//en tilpasset klassen vi har gjort noe som vil laste inn alle bildene fra en xml fil som punktgrafikk privat Var imageLoader: ImageLoader; //denne klassen vil vise alle våre Polaroids, ved å motta en Vektor av punktgrafikk private Var polaroidHolder: PolaroidHolder; //tre bakgrunn, er bg en abbrivation for bakgrunnen privat Var bg: Bakgrunn offentlig funksjon main (): void {//laste våre bilder imageLoader = new ImageLoader ('Polaroid.swf'); imageLoader.addEventListener ('imagesLoaded', displayImages, falsk, 0, true); addChild (imageLoader); imageLoader.load ('pictures.xml'); //legger vår bg som barn bg = new Bakgrunn (); addChild (bg); //legge hendelsen lytteren, så vi vet når vi zoomet inn eller ut //tredje parameter av addEventListener er sant, så vi kan fange hendelsen, når det "bobler" opp fra Polaroid addEventListener ('Zoomin', onZoomIn, ekte); addEventListener ('zoomout', onZoomOut, true); } Private funksjon displayImages (event: Aktivitet): void {//vi har lastet alle bildene våre polaroidHolder = new PolaroidHolder (imageLoader.images); addChild (polaroidHolder); //også rydde opp i imageLoader imageLoader.cleanUp (); imageLoader = null; } Private funksjon onZoomIn (hendelse: Hendelse): void {//ved å zoome inn, vil vi bg Tweener.addTween mørkere (bg, {alfa: 0,6, tid: 1}); } Private funksjon onZoomOut (hendelse: Hendelse): void {//ved å zoome ut, vi vil lette bg Tweener.addTween (bg, {alfa: 1, tid: 1}); }}}



    Trinn 29: Looking Back

    Tada! Vi er ferdige, dette var litt av en tutorial! Jeg håper dere hadde det gøy å følge denne opplæringen, og også lært noe av det. Hvorfor ikke leke seg med koden? Du kan prøve å legge tekstfelt og liksom vise tittelen på bildet. Eller bruk flere typer Polaroids. Takk, og gjerne kommentere hvis du har spørsmål eller kommentarer. Hold et øye for min neste tutorial! Anmeldelser