Make en Dynamic Copyright Notice i Flash: Part 2
Del
Del
Del
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
I del 1 av denne lange opplæringen vi dekket flere nyttige programmeringsteknikker inkludert planlegging, utarbeidelse og lasting XML, variabel og funksjon erklæring, skalering, justering og masse andre. La oss nå avsluttet vår utrolig enkle (og svært fleksibel) opphavsrett ..
Trinn 25: tekstformat Object Properties
Hvis du husker fra del 1, alle våre tekstformattering- variabler nå holder de relevante verdier. Vi kan tildele disse variablene til egenskapene til tekstformat objektet vi skapt enda tidligere. Denne gangen la oss hoppe over den generiske modellen og bare gjøre det:
//tilordne variabler å egenskapene til tekstformat //font tfCopyright.font = theFont; //size tfCopyright.size = theFontSize; //farge tfCopyright.color = theFontColor; //url tfCopyright.url = thelink; //target tfCopyright.target = theTarget; //fet tfCopyright.bold = theFontBold; //kursiv tfCopyright.italic = theFontItalic; //understreking tfCopyright.underline = theFontUnderline;
Trinn 26: Auto-Size den Textfield
Siden vår Textfield viser tekst dynamisk, og teksten kan teoretisk være av hvilken som helst lengde, bør vi auto- størrelse tekstfeltet. For å gjøre det, vil vi også nødt til å justere teksten til venstre eller høyre. Jeg sier igjen:
//AUTO-SIZE tekstfeltet og venstre justere teksten IT txtCopyright.autoSize = TextFieldAutoSize.LEFT;
Trinn 27: Påfør tekstformat Object
All vår fine tekstformatering arbeid ville være for ingenting hvis vi ikke bruke den til selve Textfield. Nå ville være god tid til å gjøre det:
//GJELDER tekstformat til tekstfeltet txtCopyright.setTextFormat (tfCopyright);
Som du kan se, vi bruker setTextFormat () Anmeldelser metoden i Textfield klassen, passerer navnet på vår tekstformat variabel som et enkelt argument. Vi har nettopp fullført tekstformatering del av vår kode. Her er hva vår viktigste funksjon bør se etter nå: Og dette er hva vi skal se etter at vi resave de .as og publisere .swf: Alle tekstformatering verdier har gått fra XML riktig, og utseendet av opphavsretten kan nå bli endret fra XML. Jeg oppfordrer deg til å eksperimentere ved å endre tekstformatering verdier i Copyright.xml Den andre hoveddelen av kode i vår viktigste funksjon vil posisjonere vår erklæring om opphavsrett til stedet satt i XML-filen, med eller uten animasjon. For å gjøre det skje, må vi få resten av verdiene fra XML. Måten det er gjort er allerede kjent fra de foregående trinnene, så la oss bare skrive koden. Vet ikke om deg, men jeg har en stor deja vu akkurat nå: Vi har bare en mer verdi å passere fra vår XML-fil til Actionscript, og at verdi er holdt i movieClipName element av vår XML-fil. La oss få strengverdi først: Vi trenger at variabelen for å få sin verdi fra XML fordi vi ønsker å være i stand til å posisjonere vår opphavsrett relative enten til scenen eller MovieClip vi kan velge. Antagelig vil vår Flash prosjektet har en rekke movieclips i sin rot Tidslinje, og vi vil kanskje informasjon om opphavsrett til å vises på bunnen av en av disse klippene. Å vite forekomsten navnet på det klippet, ønsker vi å være i stand til å sette den i XML-filen, slik at vi kan plassere merknaden om opphavsrett uten å måtte publisere SWF-fil. Vår movieClipName variabel har allerede verdien gått fra XML. I vår XML-fil setter vi movieClipName vilkårlig til verdien av mcContentModule plakater (og du husker kanskje at slik er forekomstnavnet av referansen MovieClip vi plassert nær toppen av scenen i vår FLA-fil). Når vi mottar denne verdien i vår Actionscript-kode, blir det "mcCopyrightModule" Bilde: en streng verdi i anførselstegn. Vi trenger å konvertere denne verdien fra String til en MovieClip eksempel navn (for å fjerne anførselstegnene, så å si), og for å velge den forekomsten navn fra eksempel navnene på alle movieclips vi kan ha på scenen i vår Flash prosjekt. For å velge ett MovieClip av mange som kan befinne seg i roten Tidslinje av en FLA prosjekt, kan vi bruke MovieClip konvertering og klammer syntaks, som dette: Vi vil nå fortsette å skrive uttalelser og funksjoner som vil plassere og animere vår merknad om opphavsrett, men først la oss se hva våre viktigste funksjonen ser ut så langt: Vi skal nå lage en ny funksjon i vår hovedfunksjon. Denne nye funksjonen vil være ansvarlig for å sette relative X og Y-koordinatene for opphavsretten når filmen vår første last, og for å sette disse koordinatene på nytt hvis en bruker endrer størrelsen på nettleservinduet. Alt vi trenger å gjøre i dette trinnet i vår tutorial er definere funksjonen: Den mulige posisjonen vår erklæring om opphavsrett vil bli bestemt av tre hovedvariabler: relativeX Den faktiske verdier av relativeX Hvis relativeTo Hvis relativeTo Det tok mye blekk til å være beskrevet i vanlig engelsk, men kan uttrykkes i en svært kompakt bit kode som vi plasserer inne i setRelativeCoordinates Når vi bruker slide-in animert effekt og posisjonere vår opphavsrett i forhold til en MovieClip, vi vil ikke at vår merknad om opphavsrett til pop plutselig inn i eksistens et sted i midten av scenen og skyv langs MovieClip til sin endelige X koordinat. Det ville være litt for råolje. I stedet ønsker vi vår merknad om opphavsrett til å gli i grasiøst ut av ingenting. Vi trenger en maske for å få dette til. I dette trinnet skal vi tegne formen for masken, og i neste trinn, vil vi sette masken til å avsløre vår Textfield objekt når det er nødvendig. Du husker kanskje at når vi erklært vår maske variabel vi tildelt det til MovieClip datatype. La oss nå holde oss den nye MovieClip inn i våre variable, og plassere den variable innenfor andre leddet i koden som vi skrev i forrige trinn: Når vi plasserer opphavsrett i forhold til en MovieClip, ønsker vi vår maske for å være så bred som MovieClip, minus theXOffset Nå la oss trekke masken La oss sette maske for å avsløre Textfield hvis det er plassert i forhold til en MovieClip. Formen vår maske er klar, og vi trenger bare å tildele masken til Textfield og legge masken til Displayliste: Nå la oss ta en titt på hva vi har så langt i denne delen av vår kode: Hvis opphavsretten er plassert i forhold til scenen, avstanden fra nedre kant av scenen til informasjon om opphavsrett bør forbli den samme, selv når scenen er endret. Tilsvarende, hvis opphavsretten er plassert i forhold til en MovieClip, avstanden fra nedre kant av at MovieClip til informasjon om opphavsrett bør også forbli den samme. Vi kan skrive en eneste setning som vil ta vare på den relative Y koordinat for Textfield som viser vår opphavsrett tekst. Hvis vi gjør Y koordinat av Textfield lik relativey Alt dette omsettes til følgende kodelinje: Vår opphavsrettserklæring skal gli inn i sin endelige posisjon hvis slide-in animert effekt slås på i XML, eller bare vises ved at plasseringen av slide-in effekt slås av. I begge tilfeller den endelige X koordinat for informasjon om opphavsrett er det samme. Hvis opphavsretten er satt til å vises på den høyre kanten av scenen eller en MovieClip, bør vi trekke fra bredden av informasjon om opphavsrett og verdien av theXOffset Derfor trenger vi en venstre endelige relative koordinere og et riktig slutt relativ koordinere: Vi trenger å generalisere den endelige X koordinat for vår Textfield, men å plassere det inn i sin egen variabel der verdien vil endres avhengig av Verdien av leftOrRight Forutsatt at alle movieclips i vår hoved Flash prosjektet er av en fast størrelse, er scenen det eneste objektet som vil kreve opphavsretten til å oppdatere sin posisjon hvis en bruker endrer størrelsen på nettleservinduet. Vi har allerede satt den relative Y koordinat som vil oppdateres når scenen er endret. Hvis informasjon om opphavsrett er plassert på venstre kant av scenen, endre størrelse på nettleservinduet vil ikke påvirke den relative X koordinat for Textfield. Men hvis informasjon om opphavsrett er plassert på høyre kant av scenen, den siste relative X-koordinat for tekstfeltet blir nødt til å oppdatere hver gang nettleservinduet er endret. Oppgaven er veldig klar og alt vi trenger å gjøre er å forklare det til Flash i sitt eget språk: Dette fullfører setRelativeCoordinates Animasjon i Flash kan være rammebasert eller tidsbasert. Hastigheten på rammebasert animasjon avhenger av to faktorer: frame rate satt i hoved Flash prosjektet og hastigheten på datamaskinen spille animasjonen. Jo saktere datamaskinen, er det mer sannsynlig selve bildefrekvens på animasjonen til å være lavere enn sin erklærte frame rate. Hvis datamaskinen er opptatt med andre oppgaver, kan animasjonen lag. Hastigheten på tidsbasert animasjon er uavhengig av hastigheten på datamaskinen som kjører den. At hastigheten bare avhengig av usignert heltall vedtatt som et argument til et objekt av Timer klassen som styrer animasjonen. Det heltall setter perioden mellom "ticks" av Timer objekt i millisekunder. . Det er grunnen til at hvis vi ønsker at våre animasjon å være glatt, er det bedre å gjøre det tidsbasert For å kontrollere hastigheten på våre animerte effekter, har vi numeriske variabler holder verdier mottatt fra XML: slideInSpeed Først, la oss definere funksjonen, som vanlig: Vi ønsker noen lettelser for vår slide-in effekt for å gjøre at effekten ser litt mer realistisk, men alt vi trenger er en enkel ease-out, og det er derfor, som vi ble enige om tidligere, ville det gjøre noe fornuftig for oss å importere en av de store, opsjonsrike populære tweener klasser som Caurina eller TweenLite. Vi får bare ta med ease-out inn i koden for vår slide-in animert effekt. Ideelt sett ville det være flott å skrive koden for slide-in effekt på en slik måte at både glidende og lettelsene er gjort av den samme setningen. Og vi tilfeldigvis har bare ting for det! Hva jeg skal si er opplagt, men lett å glemme. Flash ikke skaper bevegelse. Det kan ikke. Det ville ikke være i stand til å bevege seg noe selv om det digitale liv avhengig av det. Alle Flash kan gjøre er posisjonen en visuell objekt på nye koordinater hver gang en forekomst av en bestemt hendelse objektet er opprettet. I vårt tilfelle, hver gang en Timer hendelse er sendt, kan Flash tildele nye koordinater til Textfield som viser informasjon om opphavsrett mottatt fra XML. "lettelser out" betyr å endre koordinatene til et visuelt objekt på en slik måte at med hver neste Sendes tilfelle blir det objekt plassert nærmere de endelige koordinater ved minkende intervaller. For å si det på en annen måte, for eksempel hvis avstand fra den aktuelle X-koordinaten til vår Textfield til sin endelige X-koordinaten er 80 piksler, og at avstanden blir delt på to hver gang tidsuret flått, så ved den første hake av en tidtaker vår Textfield objektet er omplassert 40 piksler nærmere sitt endelige X koordinat, på den andre flåtten den Textfield omplasseres bare 20 piksler nærmere sine endelige X koordinater, på den tredje flåtten den er omplassert av 10 piksler, på den fjerde flåtten, med 5, på den femte tick, ved 2,5, ved den sjette kryss, ved 1,25 og så videre. I forhold til illusjon av bevegelse, ser det ut til at Textfield beveger seg mot sin endelige X koordinat, gradvis bremse ned. Dividere avstand av to ville faktisk lage en virkelig rask animasjon. Men avstanden må ikke være delt på to, det kan deles ved et høyere tall. . Jo høyere tall, jo saktere animasjon For å oversette det til programma vilkår, trenger vi denne data: Å ha dataene, kan vi nå skrive koden. Først, la oss fortelle Flash hvordan å beregne avstanden mellom dagens X-koordinat for Textfield og den endelige X koordinat: Dette gjør perfekt logisk sans fordi definisjonen av en avstand er forskjellen mellom den aktuelle posisjonen og referanse posisjoner: Jeg er for tiden i New York, og forskjellen mellom koordinatene til New York og Paris omtrent lik avstanden fra kaffekoppen på pulten min til noen andre er rykende kaffekopp på bordet i Le Cafe konstant Så til selve lettelser: Vi forteller Flash for å oppdatere gjeldende X-koordinat for Textfield ved å legge til. den numeriske verdien ved å dele aktuelle avstanden til den endelige X av indeksen som finnes i slideInSpeedIndex Vi har nettopp skrevet koden som gjør den viktigste biten av matematikk for vår ease-out skyve animasjon, og likevel animasjonen vil ikke forekomme. Hvorfor? Vi har ennå ikke startet tidtakeren og har ikke skapt tilfelle lytteren som ville lytte til arrangementer sendt ut av timer og ville kjøre vår animasjon funksjon hver gang en hendelse er sendt. Men vi kommer ikke til å starte tidtakeren og legge til hendelsen lytteren ennå: vi vil starte og legge dem litt lenger i koden vår, og veldig snart vil du se hvorfor.
//Hovedfunksjonen funksjon makeCopyright (copyright: XML): void {//Få det første året fra XML initialYear = copyright.initialYear.text (); //Få opphavs teksten fra XML theHolder = copyright.theHolder.text (); //Få uttalelsen teksten fra XML theStatement = copyright.theStatement.text (); //Få inneværende år fra det lokale systemet currentDate = new Date (); currentYear = currentDate.getFullYear (); currentYearString = currentYear.toString (); //Opprett tekstfeltet objektet txtCopyright = new Textfield (); //Tilsett Textfield objektet til Vis liste addChild (txtCopyright); //eller stage.addChild //Display tekst i Textfield txtCopyright.text = "COPYRIGHT ©" + initialYear + "-" + currentYearString + "" + theHolder + "" + theStatement; //Formatere teksten //Opprett tekstformat objekt tfCopyright = new tekstformat (); //GET strengen og tallverdier for tekstformat Fra XML //theFont theFont = copyright.theFont.text (); //theFontSize theFontSize = copyright.theFontSize.text (); //theFontColor theFontColor = copyright.theFontColor.text (); //thelink thelink = copyright.theLink.text (); //theTarget theTarget = copyright.theTarget.text (); //KONVERTER strenger å booleans og håndtere mulige feil //theFontBold theFontBoldString = copyright.theFontBold.text (); if (theFontBoldString == "true") {theFontBold = true; } Else if (theFontBoldString == "false") {theFontBold = false; } Else {//Håndtak feilen txtCopyright.text = "Vennligst angi riktig boolsk verdi i theFontBold XML element."; } //TheFontItalic theFontItalicString = copyright.theFontItalic.text (); if (theFontItalicString == "true") {theFontItalic = true; } Else if (theFontItalicString == "false") {theFontItalic = false; } Else {//Håndtak feilen txtCopyright.text = "Vennligst angi riktig boolsk verdi i theFontItalic XML element."; } //TheFontUnderline theFontUnderlineString = copyright.theFontUnderline.text (); if (theFontUnderlineString == "true") {theFontUnderline = true; } Else if (theFontUnderlineString == "false") {theFontUnderline = false; } Else {//Håndtak feilen txtCopyright.text = "Vennligst angi riktig boolsk verdi i theFontUnderline XML element."; } //Tilordne variabler å egenskapene til tekstformat //font tfCopyright.font = theFont; //size tfCopyright.size = theFontSize; //farge tfCopyright.color = theFontColor; //url tfCopyright.url = thelink; //target tfCopyright.target = theTarget; //fet tfCopyright.bold = theFontBold; //kursiv tfCopyright.italic = theFontItalic; //understreking tfCopyright.underline = theFontUnderline; //AUTO-SIZE tekstfeltet og venstre justere teksten IT txtCopyright.autoSize = TextFieldAutoSize.LEFT; //GJELDER tekstformat til tekstfeltet txtCopyright.setTextFormat (tfCopyright); } //Lukker den viktigste funksjonen
fil. Du vil også legge merke til at vår informasjon om opphavsrett er nå en kobling som åpner en ny side i det nye nettleservinduet
Trinn 28:. Posisjon og Opacity Verdier
//få verdiene fra XML for variablene den posisjonen tekstfeltet, og kontrollere sine OPACITY //theXOffset theXOffset = copyright.theXOffset.text (); //theYOffset theYOffset = copyright.theYOffset.text (); //relativeTo relativeTo = copyright.relativeTo.text (); //leftOrRight leftOrRight = copyright.leftOrRight.text (); //Konverter String til boolsk for slideIn slideInString = copyright.slideIn.text (); if (slideInString == "true") {slideIn = true; } Else if (slideInString == "false") {slideIn = false; } //SlideInSpeed slideInSpeed = copyright.slideInSpeed.text (); //slideInSpeedIndex slideInSpeedIndex = copyright.slideInSpeedIndex.text (); //Konverter String til boolsk for fadeIn fadeInString = copyright.fadeIn.text (); if (fadeInString == "true") {fadeIn = true; } Else if (fadeInString == "false") {fadeIn = false; } //FadeInSpeed fadeInSpeed = copyright.fadeInSpeed.text (); //fadeInSpeedIndex fadeInSpeed = copyright.fadeInSpeed.text (); //initialAlpha initialAlpha = copyright.initialAlpha.text (); //finalAlpha finalAlpha = copyright.finalAlpha.text ();
Trinn 29: Konverter String til MovieClip Navn
//movieClipName navn movieClipName = copyright.movieClipName.text ();
MovieClip (root [movieClipName]) < p> For å være i stand til å manipulere MovieClip eksempel som ble opprettet utenfor klassen vår, må vi referere at MovieClip i klassen. For å gjøre dette, vil vi bruke variabelen av MovieClip datatype vi har erklært bare for denne anledningen:
referenceClip = MovieClip (root [movieClipName]);
//Hovedfunksjonen funksjon makeCopyright (copyright: XML): void {//Få det første året fra XML initialYear = copyright.initialYear.text (); //Få opphavs teksten fra XML theHolder = copyright.theHolder.text (); //Få uttalelsen teksten fra XML theStatement = copyright.theStatement.text (); //Få inneværende år fra det lokale systemet currentDate = new Date (); currentYear = currentDate.getFullYear (); currentYearString = currentYear.toString (); //Opprett tekstfeltet objektet txtCopyright = new Textfield (); //Tilsett Textfield objektet til Vis liste addChild (txtCopyright); //Display tekst i Textfield txtCopyright.text = "COPYRIGHT ©" + initialYear + "-" + currentYearString + "" + theHolder + "" + theStatement; //Formatere teksten //Opprett tekstformat objekt tfCopyright = new tekstformat (); //GET strengen og tallverdier for tekstformat Fra XML //theFont theFont = copyright.theFont.text (); //theFontSize theFontSize = copyright.theFontSize.text (); //theFontColor theFontColor = copyright.theFontColor.text (); //thelink thelink = copyright.theLink.text (); //theTarget theTarget = copyright.theTarget.text (); //KONVERTER strenger å booleans og håndtere mulige feil //theFontBold theFontBoldString = copyright.theFontBold.text (); if (theFontBoldString == "true") {theFontBold = true; } Else if (theFontBoldString == "false") {theFontBold = false; } Else {//Håndtak feilen txtCopyright.text = "Vennligst angi riktig boolsk verdi i theFontBold XML element."; } //TheFontItalic theFontItalicString = copyright.theFontItalic.text (); if (theFontItalicString == "true") {theFontItalic = true; } Else if (theFontItalicString == "false") {theFontItalic = false; } Else {//Håndtak feilen txtCopyright.text = "Vennligst angi riktig boolsk verdi i theFontItalic XML element."; } //TheFontUnderline theFontUnderlineString = copyright.theFontUnderline.text (); if (theFontUnderlineString == "true") {theFontUnderline = true; } Else if (theFontUnderlineString == "false") {theFontUnderline = false; } Else {//Håndtak feilen txtCopyright.text = "Vennligst angi riktig boolsk verdi i theFontUnderline XML element."; } //Tilordne variabler å egenskapene til tekstformat //font tfCopyright.font = theFont; //size tfCopyright.size = theFontSize; //farge tfCopyright.color = theFontColor; //url tfCopyright.url = thelink; //target tfCopyright.target = theTarget; //fet tfCopyright.bold = theFontBold; //kursiv tfCopyright.italic = theFontItalic; //understreking tfCopyright.underline = theFontUnderline; //AUTO-SIZE tekstfeltet og venstre justere teksten IT txtCopyright.autoSize = TextFieldAutoSize.LEFT; //GJELDER tekstformat til tekstfeltet txtCopyright.setTextFormat (tfCopyright); //Få verdiene fra XML for variablene den posisjonen tekstfeltet //theXOffset theXOffset = copyright.theXOffset.text (); //theYOffset theYOffset = copyright.theYOffset.text (); //relativeTo relativeTo = copyright.relativeTo.text (); //leftOrRight leftOrRight = copyright.leftOrRight.text (); //Konverter String til boolsk for slideIn slideInString = copyright.slideIn.text (); if (slideInString == "true") {slideIn = true; } Else if (slideInString == "false") {slideIn = false; } //SlideInSpeed slideInSpeed = copyright.slideInSpeed.text (); //slideISpeedIndex slideInSpeedIndex = copyright.slideInSpeedIndex.text (); //Konverter String til boolsk for fadeIn fadeInString = copyright.fadeIn.text (); if (fadeInString == "true") {fadeIn = true; } Else if (fadeInString == "false") {fadeIn = false; } //FadeInSpeed fadeInSpeed = copyright.fadeInSpeed.text (); //fadeInSpeedIndex fadeInSpeedIndex = copyright.fadeInSpeedIndex.text (); //initialAlpha initialAlpha = copyright.initialAlpha.text (); //finalAlpha finalAlpha = copyright.finalAlpha.text (); //movieClipName navn movieClipName = copyright.movieClipName.text (); //Konverter strengen til en MovieClip navn referenceClip = MovieClip (root [movieClipName]); } //Lukker den viktigste funksjonen
Trinn 30: Innstilling Relativ Koordinater
//angi relative koordinater funksjons setRelativeCoordinates (): void {}
Trinn 31: Plasser Textfield
, relativeZeroX Hotell og relativey
. Hvis informasjon om opphavsrett er plassert nær høyre kant av scenen eller MovieClip, vil dens X koordinere være basert på verdien av relativeX
variabel. Hvis informasjon om opphavsrett er plassert nær venstre kant av scenen eller en MovieClip, sin X koordinat vil være basert på verdien av relativeZeroX
variabel. Y koordinat av oppsigelsesretten vil i begge tilfeller være basert på verdien av relativey
variabel.
, relativeZeroX
og relativey
variabler bør i sin egen tur, avhengig av verdien av relativeTo
variabel som kan inneholde enten "scenen"
eller " MovieClip "
strenger.
variabel holder" scenen "streng, relativeX
bør være lik bredden av scenen, relativeZeroX
bør være lik 0, og relativey
bør være lik høyden av scenen.
variabel holder "MovieClip" string relativeX
bør være lik summen av referenceClip
's X koordinat fin og bredden på referenceClip
, relativeZeroX
bør være lik til X-koordinat for referenceClip
, og relativey
bør være lik summen av Y-koordinat for referenceClip Hotell og høyden.
funksjon:
//POSISJON tekstfeltet i forhold til scenen eller A MovieClip if (relativeTo == "scenen") {relativeX = stage.stageWidth; relativeZeroX = 0; relativey = stage.stageHeight; } Else if (relativeTo == "MovieClip") {relativeX = referenceClip.x + referenceClip.width; relativeZeroX = referenceClip.x; relativey = referenceClip.y + referenceClip.height; }
Trinn 32: Tegn en form for en Maske
//POSISJON tekstfeltet i forhold til scenen eller A MovieClip if (relativeTo == "scenen") {relativeX = stage.stageWidth; relativeZeroX = 0; relativey = stage.stageHeight; } Else if (relativeTo == "MovieClip") {relativeX = referenceClip.x + referenceClip.width; relativeZeroX = referenceClip.x; relativey = referenceClip.y + referenceClip.height; //Trekke MASK copyrightMask = new MovieClip (); }
verdien multiplisert med to (en offset på venstre side og en på høyre ). Vi ønsker masken å være av samme høyde som vår Textfield. Vi ønsker å plassere masken på theXOffset
avstand fra venstre kant av MovieClip (som ville sentrere maske horisontalt) - og til theYOffset
avstand fra nedre kant av MovieClip.
//trekke MASK copyrightMask = new MovieClip (.); copyrightMask.graphics.beginFill (0xFF0000,0); copyrightMask.graphics.drawRect (0, 0, referenceClip.width- (theXOffset * 2), txtCopyright.height); copyrightMask.graphics.endFill (); copyrightMask.x = referenceClip.x + theXOffset; copyrightMask.y = (referenceClip.y + referenceClip.height) - (txtCopyright.height + theYOffset);
Trinn 33: Avslør Textfield
//tildele MASK til tekstfeltet txtCopyright.mask = copyrightMask; //LEGG masken til DISPLAY LIST addChild (copyrightMask);
//POSISJON tekstfeltet i forhold til scenen eller A MovieClip if (relativeTo == "scenen") {relativeX = stage.stageWidth; relativeZeroX = 0; relativey = stage.stageHeight; } Else if (relativeTo == "MovieClip") {relativeX = referenceClip.x + referenceClip.width; relativeZeroX = referenceClip.x; relativey = referenceClip.y + referenceClip.height; //Trekke MASK copyrightMask = new MovieClip (); copyrightMask.graphics.beginFill (0xFF0000,0); copyrightMask.graphics.drawRect (0, 0, referenceClip.width- (theXOffset * 2), txtCopyright.height); copyrightMask.graphics.endFill (); copyrightMask.x = referenceClip.x + theXOffset; copyrightMask.y = (referenceClip.y + referenceClip.height) - (txtCopyright.height + theYOffset); //Tildele MASK til tekstfeltet txtCopyright.mask = copyrightMask; //LEGG masken til DISPLAY LIST addChild (copyrightMask); }
Trinn 34: Sett Relativ Y Koordinere
, toppen av vår Textfield vil bli plassert til og med bunnen av scenen eller MovieClip. Vi må trekke fra høyden på Textfield fra relativey
. Vi kan også være lurt å trekke verdien av theYOffset
variabel, hvis vi ønsker vår opphavsrettserklæring å vises litt over bunnen scenekanten eller en MovieClip.
//sette den relative Y geografiske tekstfeltet txtCopyright.y = relativeY- (txtCopyright.height + theYOffset);
Trinn 35: tilordne verdier til Koordinater
fra relativeX
. Hvis opphavsretten er satt til å vises på den venstre kanten av scenen eller en MovieClip, bør vi legge til theXOffset
til relativeZeroX
.
//tilordne verdier til finalen VENSTRE OG HØYRE X koordinater for tekstfeltet xFinalRight = relativeX- (txtCopyright.width + theXOffset); xFinalLeft = relativeZeroX + theXOffset;
Trinn 36: Slutt Relativ X Koordinere
variabel. Dette gjør vi ved hjelp av hvis ... else
om betinget utsagn:
//tildele verdi til FINAL RELATIVT X KOORDINERE if (leftOrRight == "riktig") {xFinal = xFinalRight; } Else if (leftOrRight == "venstre") {xFinal = xFinalLeft; }
Trinn 37: Plasser Textfield på Resize
//flytte tekstfeltet i RESIZE IF ITS PLASSERT i forhold til scenen på HØYRE if (leftOrRight == "riktige" & & relativeTo == "scenen") {txtCopyright.x = xFinalRight; }
funksjon, og hele funksjonen skal se slik ut:
//angi relative koordinater funksjons setRelativeCoordinates (): void {//POSISJON tekstfeltet i forhold til STAGE ELLER EN MovieClip if (relativeTo == "scenen") {relativeX = stage.stageWidth; relativeZeroX = 0; relativey = stage.stageHeight; } Else if (relativeTo == "MovieClip") {relativeX = referenceClip.x + referenceClip.width; relativeZeroX = referenceClip.x; relativey = referenceClip.y + referenceClip.height; //Trekke MASK copyrightMask = new MovieClip (); copyrightMask.graphics.beginFill (0xFF0000,1); copyrightMask.graphics.drawRect (0, 0, referenceClip.width- (theXOffset * 2), txtCopyright.height); copyrightMask.graphics.endFill (); copyrightMask.x = referenceClip.x + theXOffset; copyrightMask.y = (referenceClip.y + referenceClip.height) - (txtCopyright.height + theYOffset); //Tildele MASK til tekstfeltet txtCopyright.mask = copyrightMask; //LEGG masken til DISPLAY LIST addChild (copyrightMask); }} //Sette den relative Y geografiske tekstfeltet txtCopyright.y = relativeY- (txtCopyright.height + theYOffset); //Tilordne verdier til finalen VENSTRE OG HØYRE X koordinater for tekstfeltet xFinalRight = relativeX- (txtCopyright.width + theXOffset); xFinalLeft = relativeZeroX + theXOffset; //Tildele verdi til FINAL RELATIVT X KOORDINERE if (leftOrRight == "riktig") {xFinal = xFinalRight; } Else if (leftOrRight == "venstre") {xFinal = xFinalLeft; } //Flytte tekstfeltet i RESIZE IF Det er plassert i forhold til scenen på HØYRE if (leftOrRight == "riktig" & & relativeTo == "scenen") {txtCopyright.x = xFinalRight; } //Lukker betinget utsagn} //Lukker setRelativeCoordinates
Trinn 38: Animasjon Opprett Timer
, slideInSpeedIndex
, fadeInSpeed Hotell og fadeInSpeedIndex
. Endre sine verdier i XML vil endre hastigheten på de animerte effekter. Vi har også to Timer variabler slideInTimer Hotell og fadeInTimer
. Vi vil komme til å bruke slideInSpeedIndex Hotell og fadeInSpeedIndex
variabler og for å skape den timeren for fade-in effekt litt senere, men nå er det på tide å lage den timeren for lysbildepresentasjon i animasjon. For å sette en tidtaker gjenstand i slideInTimer
variable trenger vi bare å ringe konstruktøren av Timer klassen, og å passere slideInSpeed
variabel til det som argument:
//BLIR DEN TIMER FOR SLIDE-IN ANIMASJON slideInTimer = new Timer (slideInSpeed);
Trinn 39: Animasjon Opprett Funksjon
//SLIDING FUNKSJON //slideCopyright funksjon slideCopyright (): void {} //Lukker slideCopyright
Dagens X koordinere vår Tekst Feltet objekt, oppdatert med hver Timer hendelse
Den endelige X koordinere tekstfeltet objektet skal komme frem til - som verdi finnes i vår xFinal
variabel
Avstanden mellom dagens X koordinat av den Textfield og sin endelige X koordinat, også oppdatert med hver Timer arrangement - vi har forberedt xDistance
variabel for å holde denne verdien
Divisjonen indeks som ville hogge av en viss prosentandel av xDistance hver gang Timer arrangementet er sendt - at indeksen er gått fra XML til slideInSpeedIndex
variabel
xDistance = xFinal-txtCopyright.x;
txtCopyright.x = txtCopyright.x + xDistance /slideInSpeedIndex;
variabel