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. 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: Nå som vi har laget våre mapper, la oss gå videre til bildene. I denne opplæringen vil vi trenger minst to bilder: 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 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 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 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 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 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 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 I denne delen er vi (endelig ) kommer til å bruke Flash. Vi kommer til å sette vårt Flash dokument som skal brukes i mappen bin 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" Etterpå går til fil > Publish Innstillinger, endre Polaroid.swf til ../bin /Polaroid.swf Klikk på fanen Flash Nå kan vi endre kildebane.. Du vil se en mappe ikon med teksten "." Flash vil bruke src 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» 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: Drag Background.psd fra Biblioteket til scenen vår, etterpå konvertere den til et filmklipp. Name it Bakgrunn, og merk "Export for Action" 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 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 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 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 Gi Bilde Holder en forekomst navn imageHolder. 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 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 Til slutt må vi fortelle vår Mask Det er på tide å starte koding, hvis du hadde noen problemer med Flash § 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: Du bør endre IMAGE_1.jpg, IMAGE_2.jpg, etc. til reelle filnavn, som henviser til bildene som ligger inne i bin Lagre denne XML-filen som images.xml Før vi begynner koding, er det viktig å vite hvilke oppgaver vårt prosjekt må gjøre: 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. 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" 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 I dette prosjektet skal vi legge i flere eiendeler: en xml fil og ulike bilder. Vi kan bruke relative filbaner Loader.swf må laste bilde1.jpg. Fra sin nåværende posisjon Så hvordan legger du bilde1.jpg, uansett hvor Loader.swf ligger? Dette gjøres med absolutte filbanen lasting 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 Vi kan få den absolutte banen til SWF-fil med roten. loaderInfo.url Det er på tide å lage vår ImageLoader klasse Opprett en ny Actionscript-fil og gi den navnet ImageLoader.as Nå som vi har vår ImageLoader klasse, kan vi forbedre vår viktigste klassen 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: 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 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) Gjør de endringene som vist i koden under 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 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: 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
Trinn 2: Forstå Vår 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
En polaroid ramme
Et bilde av et tregulv
polaroid rammer. Her er en liste over bilder som jeg har brukt, men gjerne bruke dine egne bilder.
Bilde # 2
Bilde # 3
Seksjon 2: Design
Trinn 4:. Forbereder Vår tregulvet
med dimensjoner 600x600px.
Trinn 5:. Klar Polaroid Frame
Trinn 6:. Isolere Polaroid Frame
Trinn 7: Kutte Photo Part bort fra Polaroid Frame
Seksjon 3:. Flash
for eksport, og mappen src
for vår kode. Tid for å åpne Flash
Trinn 8: Lage Vår Flash Document
inne i lib
mappe
Trinn 9:. Endre Vår Publish Settings
, 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
. Etterpå klikk på Innstillinger knappen
ved siden av Script: Actionscript 3.0
, Endre det til "../src"
.
mappe for alle sine klasser
Trinn 11:. Importere Våre Grafikk til Flash
, inne vil det være det redigerte bilder som du kan bruke.
Trinn 12: Lage vår bakgrunn Sprite
. Sett base klassen til flash.display.Sprite. Når du har gjort det, kan du fjerne bakgrunnen igjen fra scenen.
Trinn 13:. Opprette og Vår Polaroid filmklipp
boks. Sett base klassen til flash.display.Sprite
Trinn 14:. Opprette Vår Polaroid sin Layers
.
.
Trinn 15: Lage 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"
.
Trinn 16: Legge til en maske til bilde Holder
. En maske forteller et lag som del skal vises, og hvilken del skal skjules.
. Etterpå bryte kopierte bildet Holder med Ctrl + B (Windows) /Cmd + B (Mac).
lag som det er en maske. Høyreklikk på layer mask og velg alternativet Mask
Seksjon 4:. Kode
, 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
< bilder >. < bilde > < fil > IMAGE_1.jpg < /fil > < /bilde > < bilde > < fil > IMAGE_2.jpg < /fil > < /bilde > < bilde > < fil > IMAGE_3.jpg < /fil > < /bilde > < /bilder >
mappe. Hvis du ikke har noen bilder, laste ned bilder som jeg nevnte i trinn 3.
inne i bin
mappe .
Trinn 18: Hvilke klasser trenger vi
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.
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
, 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 {}}}
Trinn 20: Explaining absolutte og relative filbaner
eller absolutte stier
. La meg forklare forskjellen med et eksempel; Vi har følgende mappestruktur:
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.
. 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
banen til SWF-fil og redigere den veien slik at vi kan legge våre bilder.
Trinn 22:.. Opprette Vår ImageLoader Class
, 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
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
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; }}}}}
. 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
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
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
. Tid for å legge vår bakgrunn
Trinn 28:!. Legge Vår Bakgrunn
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