nedtælling i stil med en lufthavn, terminal timer

, nedtælling i stil med en lufthavn, terminal timer,,,,, andel,,,,,,,, 13,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i denne forelæsning, vi laver en genanvendelige nedtælling timer med en dynamisk måldato, som kan fastsættes via xml.vi vil stadig numre med ned i stil med en gammel lufthavnen eller banegården status.vi dækker kode, grafik oprettelse og udvikling.,,,, berigtiget forelæsning, hver anden uge, vi tage nogle af vores læsere er favorit stillinger fra hele historien om stedet.denne forelæsning blev offentliggjort første gang i maj 2010, 1. trin: oprettet - fil, skabe en ny flash - sagen (actionscript 3) med disse indstillinger: 500x300, sort baggrund og 30 fps.,, trin 2: skabe digit_bottom movieclip, skabe en ny movieclip "digit_bottom og drage en afrundet rektangel i ca. 36px bred af 50px høj.(en hurtig måde at tegne et rektangel med præcise mål er at udvælge det rektangel, værktøj og alat - klik på scenen.), giver den rektangel en gradient fylde fra𛈇 (øverst)񑘕 (bund) og 2 px skitsere farvede񑘕.,, trin 3: holdning rektangel, position rektangel således, at registreringen af movieclip (den lille "+") er nøjagtig halvvejs mellem de højeste og laveste og venstre kant.hvis du har gjort dit rektangel 50px høj, da y - værdi skal være - 25.,, trin 4: tilføj antallet, skabe et nyt lag, og tilføje en dynamisk tekst område kaldet "t_num".vælg en skrifttype, der er en lufthavn eller togstationen er at det (som helvetica, din, eller mellemstatslige). jeg bruger helvetica bold. sæt punkt format, koncentreret, og husk at indlejre skrifttyper for tal 0 – 9., position tekstfeltet, så det er centreret om baggrunden rektangel.,, at vi skal bruge denne movieclip som grundlag for en anden grafisk, så tag et øjeblik til at sørge for, at det ser godt ud.,, løntrin 5: tilføje en maske, skaber et nyt lag på den tidsplan for, digit_bottom, movieclip og kalder det "maske".kopi afrundede rektangel og pasta, i stedet for, maske, lag (edit > lim på plads, eller command-shift-v). vælg den øverste halvdel af masken rektangel og slette den. - tryk, maske, lag, vælge maske og sikre, at det dækker over alle lagene under det.,, trin 6: skabe digit_top movieclip, gå ind i biblioteket og gentage det, digit_bottom, movieclip navn og den nye kopi digit_top. det movieclip vil være næsten identisk med den, digit_bottom, clips, undtagen maske vil vise den øverste halvdel af grafik i stedet for bunden, slette. den grafiske nu, maske, lag.kopi afrundede rektangel og pasta, i stedet for, maske, lag.denne gang vælger den nederste halvdel og slette den. den eneste anden justering du måske ønsker at gøre, er at tilpasse den farve af teksten og skygge i baggrunden afrundet rektangel.jeg lavede den grafiske i min digit_top, klip lidt mørkere til simulering af lys, der kommer fra toppen.,, trin 7: skabe ciffer movieclip, skabe en ny movieclip ved navn "tal".træk i den, digit_top, og digit_bottom, movieclips og placerer dem begge på 0,0.giv dem f.eks. navne, top1 "og" bottom1. nu kopi af movieclips (, digit_top, og digit_bottom,), skabe et nyt lag, og pasta i stedet en kopi af hver.navn på de nye kopier "top2" og "bottom2. nu skal de have 4 movieclips i din, tal, movieclip: 2 kopier af digit_top, og 2 kopier af digit_bottom,.jeg vil forklare, hvorfor vi gør det her i de næste trin, trin 8: animation strategi, er vi nødt til at gøre lidt snilde til at komme med flere informationstiltag, vi ønsker.se nedenstående diagram af vores tal, movieclip (jeg er gør det i 3d, så du kan se, hvor let):,, animation trin 1:, vi starter med, bottom2, klip vendt på hovedet (ved hjælp af scaley ejendom) og placeret bag, top2, magasin.på dette punkt 2, clips, der er synlige, er top2, og bottom1,.numrene på disse to magasiner, svarer til hinanden, så de udgør en komplet ciffer., animation trin 2:, nu skifter vi ned, top2, klip til midten af tallene.på dette punkt scaley vil være nul, så det klip, vil ikke være synlig.samtidig er vi også med det, bottom2, clips, men det vil vi vende hele vejen ned.siden det er bagud, top2, det vil ikke vise, indtil det flipper forbi midtvejspunktet.nu 2 synlige clips, top1, og bottom1,.numrene på disse to magasiner, passer ikke, men det er okay, fordi det varer kun et kort øjeblik., animation trin 3:,, top2 dem, bliver i centrum, som bottom2, fortsætter med at falde helt ned til bunden.når den er på plads, numrene på den synlige clips (, top1, og bottom2) igen svarer til et fuldstændigt ciffer., animation trin 4: på dette punkt vil vi relayer og nulstille de 2 skjult clips at blive klar til den næste klip.se, hvordan de magasiner er i samme position som trin 1, kun vendes.,, trin 9: skabe uret movieclip, nu hvor vi har de enkelte ciffer, movieclip oprettet, lad os bygge uret., skabe en ny movieclip på scenen, kaldet "ur" med instans navn. ".i den nye movieclip sted 9. kopier af din finger, movieclip; 2 sekunder, 2 minutter, 2 timer og 3 dage.giv hvert ciffer et tilfælde navn.fra venstre til højre navn dem digit0 "," digit1 "," digit2 osv. og tilføje nogle koloner at adskille movieclips og etiketter for hver sektion.designet er op til dig.jeg har tilføjet et mørkt afrundet rektangel som baggrund, for mit ur. endelig tilføje en dynamisk tekst område kaldet "t_date".det er her, vi skal vise den dato, uret tæller ned.husk at indlejre skrifttype til denne tekst område, hvis du ikke bruger et system skrifttype.,, trin 10: skabe ciffer klasse, skabe en ny actionscript filen "tal." og tilføje denne kodeks for at skabe den tomme skal for klassen:, pakke (import flash.display.movieclip; offentlige klasse - cifret udvider movieclip {private denne top. int = 0, private denne nederst: int = 1; private var _currentdigit: system; private var _nextdigit: system; private var _number: string = "0"; //konstruktøren offentlig funktion digit() {_currentdigit = nye system (top1, bottom1); _nextdigit = nye system (top2, bottom2);}}}, det gør ikke så meget endnu.vi har et par systemer til at holde de to sæt, digit_top, og digit_bottom, movieclips.jeg har oprettet 2 konstanter, top og bund for at hjælpe med til at holde styr på de øverste og nederste clips inden for disse systemer.det, _number, variable vil holde ciffer, som er udstillet på et givet tidspunkt. (bemærk: bruger jeg understreger i min variable navne på private variabler.), finde din finger, movieclip i biblioteket og tildele denne klasse til det i den forbindelse indstillinger.,, trin 11: import den tweenlite bibliotek, vi vil bruge den tweenlite bibliotek animere vore, tal, movieclip., downloade as3 version af tweenlite bibliotek her. "kom" mappe, sted i det samme register som deres vigtigste flash - fil (eller i din kilde vej, hvis du har oprettet en anden klasse vej), lægger disse to linjer på toppen af din finger, klasse, lige under movieclip import:, import, kom. greensock. * import kom. greensock. lempelse. *, vi er knap nok kommer til at klø.e overfladen af, hvad tweenlite kan gøre i denne forelæsning.for yderligere oplysninger se tweenlite dokumentation.,, trin 12: programmet flipto animation, tilføje denne funktion til din finger, klasse: offentlig funktion flipto (nam: string): ugyldig (_number = nam; _nextdigit [-]. t_num.text = nam; _nextdigit [bottom]. t_num.text = num. /- flip ned toppen af ciffer til halvvejs tweenlite. - _currentdigit [-]. 15 (scaley: 0, lette: lineær. easenone}); //- næste ciffer bottom down tweenlite. - _nextdigit [bottom]. 3, (scaley: 1, oncomplete: flipcomplete, lette: hop. easeout})}, her er hvad der sker, linje for linje: denne funktion accepterer en kæde, der holder de tal, vi vil være med til.den første linje bare sætter vores, _number, variabel til at holde det ciffer. næste vi teksten områder i de øverste og nederste movieclips i vores _nextdigit, system til at fremvise det samme tal, så bruger vi tweenlite til mellem scaley ejendom i toppen movieclip af, _currentdigit, til 0.dette giver den virkning, at det er "falder" mod midten af ciffer., sidste linje er en anden, mellem denne gang driver bunden klip af, _nextdigit, fra toppen af tal ned til bunden.vi bruger scaley ejendom for at simulere den virkning, men denne gang fra - 1 - 1.da det er tweening dobbelt så langt som øverste klippe, vi giver den dobbelte tid (. 3 sekunder i stedet for. 15).når denne mellem var det ringer en funktion kaldes "flipcomplete".vi skriver, at fungere i det næste skridt, tage endnu et kig på diagrammet i trin 8, hvis du er forvirret over den informationskampagne her.,, trin 13: tilføje flipcomplete() funktion, tilføje denne funktion til, ciffer, klasse lige under, flipto, funktion:, privat funktion flipcomplete(): ugyldig (//antal cifre var næste: array = _currentdigit; _currentdigit = _nextdigit; _nextdigit = næste; //nulstille lagdeling reset();}, når den anden animation, afslutter vi løber denne funktion.det med, _currentdigit, og _nextdigit, arrays.efter det er gjort det kalder en funktion, der hedder "nulstilling" til at nulstille magasinet lagdeling og holdninger til den næste klip.lad os skrive det fungerer nu, skridt 14: tilføje reset() funktion, tilføje denne funktion til, tal, klasse:, privat funktion reset(): ugyldig (addchild (_nextdigit [bottom]); addchild (_currentdigit [-]); //flip op næste bund for at være bag den nuværende top _nextdigit [bottom]. scaley = - 1; _nextdigit [-]. scaley = 1}, de første to linjer i denne funktion, pop den, _nextdigit på bunden, og så, _currentdigit op til toppen af display - liste.jeg plejer bare at bruge addchild() til at gøre dette, fordi det kræver mindre maskinskrivning, end ved hjælp af setchildindex(). efter magasiner er baseret, sætter vi den scaley egenskaber, så de kan være klar til det næste klip.dette betyder, _nextdigit [bottom] fra 1 - 1, og _nextdigit [-], fra 0 til 1. igen, se diagrammet på løntrin 8, hvis du bliver væk. gå 15: tilføje til producenten, en ting, vi glemte at gøre holdning udklippene korrekt for første flip animation.vi kan gøre det let ved at tilføje en opfordring til igen, funktion i ciffer klasse konstruktøren: //konstruktøren offentlig funktion digit() {_currentdigit = nye system (top1, bottom1); _nextdigit = nye system (top2, bottom2); reset();}, trin 16: tilføje number() funktion, det sidste, vi har brug for i vores - ciffer - klasse er en måde at få adgang til private, _number, variabel fra uden for den klasse.vi kan tilføje en enkelt accessor funktion: offentlige funktion bliver number(): string (tilbage _number;}, skridt 17: skabe uret klasse, skabe en ny actionscript fil, der hedder uret. som ".pasta i denne kode:, pakke (import flash.display.movieclip; import flash.events.timerevent; import flash.media.sound; import flash.utils.timer; offentlige klasse ur går movieclip (private var _clocktimer: timeren; private var _targetdate: dato: //konstruktøren offentlig funktion clock() {}}}, ikke meget her endnu.kun import af nogle af de klasser, får vi brug for.jeg har også et par private variabler., _clocktimer, vil tælle ned i sekunder for os, og _targetdate, vil holde den dato, vi tæller ned til.,, gå 18: tilføje set() funktion, tilføje denne funktion til uret klasse lige under konstruktøren: //fastsætte dato og starte nedtællingen timer offentlig funktion, der er fastsat (dato: dato): ugyldig (_targetdate = dato; _clocktimer = nye timer (1000) //tik hvert sekund (1000 millisekunder) _clocktimer. addeventlistener (timerevent.timer, ajourføre); _clocktimer. start(); //display måldatoen over tiden t_date.text = _targetdate. tolocalestring(). touppercase(); //ajourføring uret her det begynder med den korrekte tid update();}, dette er den funktion, som vi kan bruge til at fastsætte datoen for- uret.det accepterer en dato (naturligvis) og overdrager det til, _targetdate, variabel.det instantiates vores, _clocktimer,.det, _clocktimer, vil kalde, ajourføre, funktion, én gang pr. sekund for at ajourføre de cifre, efter at de er begyndt at timeren, funktion fastsættes, t_date, tekst til dato.den tolocalestring() funktion, sikrer den dato, vises i brugerens lokale tidszone., sidste linje i denne funktion kræver, ajourføre, når at skrue tiden til rette tid.ellers ville det vise "000 lang" for en anden, indtil de første timer begivenhed.,, skridt 19: tilføje update() funktion, denne funktion er en smule lang, fordi det er der, de fleste af det arbejde, der bliver gjort.tilføj det til dit ur klasse:, privat funktion ajourføring (e: timerevent = null): ugyldig (var - nu: dato = nye date(); //den aktuelle tid //finde forskellen (i ms) mellem målet og nu var forskel: antal = _targetdate. valueof() - nu. valueof(); hvis (forskel < = 0) (//tid er op.\t\t//do something cool here \t\t_clockTimer.stop(); \t\t_clockTimer.removeEventListener(TimerEvent.TIMER, update); \t\tdiff = 0; \t} \t \t//convert to seconds \tdiff = Math.round(diff/1000); \t \t//number of days \tvar days:int = Math.floor(diff/(24 * 60 * 60)); \tdiff -= days*(24 * 60 * 60 ); \t \t//number of hours \tvar hours:int = Math.floor(diff /(60 * 60)) \tdiff -= hours*60 * 60; \t \t//number of minutes \tvar min:int = Math.floor(diff/60); \tdiff -= min*60; \t \t//seconds are all that remain \tvar sec:int = diff; \t \t//create an array of strings to hold the number for each value \tvar diffArr:Array = new Array(String(days), String(hours), String(min), String(sec)); \tvar diffString:String = "" \tvar len:int = 3; //the first værdi (dage) er 3 cifre.alle de andre har 2 for hver (var - s: snor i diffarr) (//bind snoren med et foranstillet nul, hvis det er nødvendigt, mens (s.length < len) (n = "0" + s} len = 2; //alle andre værdier er 2 cifre i længden diffstring + = s; //tilføje polstret snor til diffstring} //går igennem hver karakter i diffstring og de tilsvarende tal for (var - jeg: int = 0. jeg < diffstring.length; jeg + +) (hvis (diffstring. substr (1, 1).= det ["tal" + jeg]. nummer) (denne ["tal" + i). flipto (diffstring. substr (1, 1)}}} denne funktion accepterer en timerevent som parameter.standardværdien for denne parameter er ugyldig.det gør det muligt for os at kalde den funktion, uden at sende en parameter, som vi laver i der funktion. den første linje af denne funktion er den aktuelle dato og tidspunkt for en date ting.det næste, vi finder den forskel mellem den nuværende tidspunkt og dato (line 37).hvis forskellen er 0 eller mindre, så er det den sidste dato, så stopper vi, _clocktimer (linjer 38-44), idet forskellen i tid mellem nu og det mål er beregnet i millisekunder, er vi nødt til at lave det om til en god læsbart billede i dage, timer, minutter og sekunder (linjer 46-62).det her er ret enkelt, så længe, du ved, at der er 1000 millisekunder i en anden, 60 sekunder i et minut, 60 minutter i en time og 24 timer i døgnet, på 65 vi opbevarer alle de værdier, som led i et system.ved on - line - 68 vi loop gennem hvert element og tilføje den til en række tegn "diffstring".mens vi gør dette, er vi også tilføje førende nuller, når dette er nødvendigt (budgetpost 71).så hvis vores værdier for tiden var 30 dage, 5 timer og 56 minutter, og 6 sekunder, diffstring, ville se sådan her: "030055606". den sidste denne funktion er loop gennem tegn på, diffstring (ved hjælp af charat() metode).for hver art i snor, vi tjekker for at se, om det er forskelligt fra det antal, der i øjeblikket er anbragt på de tilsvarende tal.det er let på grund af den måde, vi kaldte vores ciffer tilfælde.hvis antallet er ikke den samme som den, der i øjeblikket udviser vi fortæller, at tal til at vende til antallet i, diffstring,.,, gå 20: tilføje sunde, finde (eller skabe en god en tikkende lyd, der vil spille hver gang klokken opdateringer.import til biblioteket i din flash fil og klasse navn til "ticksound i forbindelse miljøer, tilføje, _ticksound, variabel til toppen af dit ur klasse lige under de to andre variabler, private var _clocktimer: timeren; private var _targetdate: dato, private var _ticksound: sunde = nye ticksound(); og spiller godt i, ajourføre, funktion:, _ticksound. play();,, gå 21: tilføje det vigtigste dokument, klasse, vores nedtælling timer er fuldstændige, vi har bare brug for en måde at fastsætte dato.skabe en ny actionscript filen 'vigtigste. for med denne kode:, pakke (import flash.display.movieclip; offentlige klasse vigtigste udvider movieclip {offentlige funktion main() (//fastsat datoen for tiden var targetdate: dato = nye date(); targetdate. settime (dato. utc (2010 - 4, 20, 28, 00) ur. sæt (targetdate)}}}, alt dette er fastsat datoen for tiden eksempel på scenen.jeg bruger settime() og dato. utc() at ændre datoen for universelle tidskoden er.på denne måde vil denne dato være korrekt, når det bliver konverteret til lokal tid på brugerens computer.også huske på, at de måneder, er lig med nul.så den 4. måned, rent faktisk kan ikke april. i - fil, der dokumentet klasse vigtigste.,, hvis du har brug for en opfyldning af dokumentet klasse tjek det hurtigt tip.,, skridt 22: prøve, prøve din film nu, og det skal arbejde.prøv at ændre datoen i de vigtigste klasse og se, hvordan nedtællingen ændringer. en potentiel ulempe, hvor vi har gjort det, er, at den dato, er svært kodet i vores stg.det er fint, men det ville være fedt, hvis vi kunne dynamisk belastning datoen, så vi kan genbruge nedtælling til forskellige ting. lad os se, hvad vi kan gøre ved det, gå 23: skabe xml - filer, skabe en ny xml - sagen i den samme mappe som din flash - filen "targetdate. - (en xml - fil, er bare en almindelig tekst fil).gør det til en xml - fil:, < targetdate > < år > 2011 < /år > < måned > 3 < /måned > < dag > 25 < /dag > og lt; t > 20 < /t > < øjeblik > 21 < /minut > < /targetdate > ved denne form for vores mål er temmelig oppustet (der er mere oveni, end der er faktiske data), men det vil gøre tingene meget klart i forbindelse med denne forelæsning.,, skridt 24: belastning af xml -, lad os gøre nogle ændringer til vores vigtigste dokument klasse.i stedet for alt i det dossier med denne kode:, pakke (import flash.display.movieclip; import flash.net.urlloader; import flash.net.urlrequest; import flash.events.event; offentlige klasse vigtigste udvider movieclip (//konstruktøren offentlig funktion main() (//belastning af xml - var xmlloader: urlloader = nye urlloader(); xmlloader. addeventlistener (event.complete, ondataloaded); xmlloader. belastning (nye urlrequest ("targetdate. xml -")}}}, ser du, vi har indført nogle supplerende klasser, til at hjælpe os belastning af xml - filer.i den pågældende funktion er at skabe en ny urlloader instans at lade sagen for os.vi lægger en begivenhed til at lytte, at kalder en funktion, der hedder "ondataloaded, når sagen er læsset.,, gå 25: tilføje ondataloaded() funktion, tilføje denne funktion til de vigtigste klasse:, privat funktion ondataloaded e: begivenhed): ugyldig (var - xml: xml - = nye xml (e.target. data). var targetdate: dato = nye date(); targetdate. settime (dato. utc (int (xml. år), int (xml. måned), int (xml. dag), int (xml. time), int (xml. minut)) ur. sæt (targetdate)), og denne funktion skaber en ny xml - indsigelse fra den sag, vi her.vi skal skabe en ny date ting fra værdierne i xml.vi er igen ved settime() og dato. utc() at ændre datoen for universelle tidskoden er.endelig er det samme som før, og det er den dato, til vores ur, f.eks.,, gå 26: afslutte, det er temmelig meget, for det her.der er et par forbedringer, kan du lide at gøre:, afhængigt af hvad du bruger nedtællingen, kan du måske ønsker at gøre noget særligt for brugeren, når nedtællingen rammer nul.du ville tilføje det til, ur, klasse i den del af den, ajourføre, funktion, der kontrollerer, om tiden er nul, som jeg nævnte, formatet af vores xml - er meget uøkonomiske, som det er.du kan ikke bare gå på date med en snor via flashvars, anvende en anden dataformat (som json), eller bare reformatere xml - til at være en smule mere kompakt. held og lykke!som altid, efter en kommentar, og lad mig vide, hvad du tror.

Flash file setup
Background image or animation
Rectangle Properties
Number text field
Create the Mask
digit_top and digit_bottom clips
Digit Animation Diagram
Clock MovieClip
Digit Class Linkage Settings
Tick Sound Linkage Settings
Set the Document Class



Previous:
Next Page: