skabe et statisk fordrejning virkning ved hjælp af forskydningen kort filter

, skabe en statisk fordrejning virkning ved hjælp af forskydningen kort filter,,,,, 3,,,,,,,,, 4,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,,, to gange om måneden, kan vi se på nogle af vores læsere favorit stillinger fra hele historien om activetuts +.denne forelæsning blev udgivet første gang for et år siden, i januar 2010. i denne forelæsning. du skal lære at bruge as3 er displacementmapfilter klasse for at skabe en genanvendelige statisk fordrejning virkning for knap rollovers.,,,, endelige resultat forpremiere, lad os tage et kig på det endelige resultat, vi arbejder hen imod:,, trin 1: om forskydning kortlægning, en forskydning kort virker ved hjælp af farven værdier fra et billede til at ændre holdning til pixel i et andet billede.denne virkning er ofte anvendes til at lave en fast grafisk »wrap« omkring en dimensionel image.vi vil bruge det her til at fordreje en knap, så det ser ud, som om det er at modtage statisk støj.,, du kan læse mere om forskydning af her.,, trin 2: oprettet - fil, skabe en ny flash - sagen (actionscript. 3. din film, der kan variere afhængigt af din kamp.for det demo - jeg sætter min film som 500x300, sort baggrund og 30 fps.,, trin 3: skabe en enkel knap, skabe en ny knap symbol på det tidspunkt (angiv > nye symbol).udformningen af de 4 medlemsstater, for din knap.den nøjagtige udformning bør være noget, der passer til din kamp.noget bedårende og delvist gennemskuelige arbejder godt sammen med dette. jeg brugte en skrifttype, kaldet genetrix. for mig, men du skal bruge noget, der matcher ud af dit spil. giv din knap et tilfælde af button1.,, trin 4: test, hvis du redder og teste din film (kontrol og gt test film), nu kan du se din knap på scenen på mus med fornyelsen, du designede.sådan her:,, løntrin 5: skabe jitterybutton klasse, vi er nødt til at tilføje skik funktioner til vores knap.vi vil gøre dette ved at skabe en ny skik klasse og sætte vores simple knappen inde i det, skabe en ny actionscript fil, der hedder "jitterybutton.".gem denne sag i det samme register som deres vigtigste flash - fil.tilføje denne kodeks for at skabe papir for vores knap:, pakke (import flash.display.sprite; import flash.display.simplebutton; offentlige klasse jitterybutton udvider sprite (private var mybutton: simplebutton; //holder henvisningen til vores simple knap //klasse konstruktøren offentlig funktion jitterybutton (knap: simplebutton) (mybutton = knap; //knap på fase bliver vedtaget i}}, alt dette kodeks, er så langt er acceptere den simple knap og opbevare en henvisning til det.vi kan tilføje flere funktioner,.,, trin 6: skabe spillet klasse, skabe en ny actionscript fil, der hedder "spil. som".det vil være det dokument, klasse i vores film.gem det i det samme register som den vigtigste flash fil. denne kodeks vil tilføje vores skik knap indpakning omkring knap på scenen:, pakke (import flash.display.movieclip; offentlige klasse spil udvider movieclip (private var startbutton: jitterybutton; //klasse konstruktøren offentlig funktion game() (//skabe nervøsitet knap fra den simple knap på scenen startbutton = nye jitterybutton (button1); //tilføje nye knap på scenen addchild (startbutton)}}} denne kode, skaber en ny instans vores skik jitterybutton klasse - og afleverer den på knappen på scenen ('button1). naturligvis deres dokument klasse vil ende med at se meget anderledes, da det vil have koden til dit spil i det.vi er bare bekymrede med koden for vores knap., tilbage i din flash - fil, der dokumentet klasse "spil".husk, du kan ikke omfatte fil forlængelse her.,, trin 7: prøve igen, hvis du redder og teste din film igen på dette tidspunkt skulle du se præcis det samme, som da vi testede i trin 4.den eneste forskel er, at vores kodeks er oprettet for at kunne tilføje vores skik opførsel.,, trin 8: skabe forskydning kort billede, vi skal nu skabe billedet af statisk mønster, som vi kan bruge til at fordreje vores knap grafisk. åben photoshop og skabe et nyt image fyldt med neutral grå (# 808080).det billede, bør være en smule større end din badge og med 3 eller 4 gange så stor.min knap er 277x56, og mit billede er 310x220. vi begynder med en neutral grå, fordi det ikke vil påvirke vores image.,, trin 9: tilføje, støj, vil vi nu tilføje lidt støj til vores image.det vil ikke være meget mærkbar i vores statisk virkning, men det giver det lidt ekstra derfor.du kan springe over dette skridt, hvis du vil. dobbelte baggrund lag og navn på de nye lag "støj".skal du nu har to lag fyldt med neutral grå.vælg den nye støj lag og vælge filter > støj > der tilsættes støj.sæt, beløb, til 120% og distribution, ensartet.se, hyperaktive.,, ramte godt. sæt "støj" lag til 10% opacitet.,, trin 10: tilføje linjer, skabe et nyt lag, kaldet "retningslinjer".nu bruger 1px blyant børste at tilføje nogle horisontale sorte og grå linjer til billedet., husker du, hvordan disse linjer vil påvirke vores image: noget mørkere end neutral vil ændre vores image i én retning og noget lettere vil flytte til den anden, trin 11: redde forskydning kort billede, vælge fil > og redde til web - & anordninger og redde dit image som en 8 farve gif ved navn "staticmap. gif '.,, trin 12:, tilbage i glimt, import" staticmap. gif til dit bibliotek (sag > import > import til biblioteket...).åben linket egenskaber, tjek, eksport til actionscript, og klasse navn til "staticmap., kan vi nu henviser dette billede i vores kode ved brug af staticmap klasse navn.,, trin 13: skabe forskydning kort filter, tilføje denne funktion til din jitterybutton klasse: //skabe forskydning kort filter privat funktion createdmfilter(): displacementmapfilter {var mapbitmap: bitmapdata = nye staticmap (0,0); //bruger bitmap data fra vores staticmap billede var mappoint: punkt = det nye punkt (0, 0); //holdning til staticmap billede i forhold til vores knap var kanaler: uint = bitmapdatachannel.red; ////////hvilken farve til brug for forskydning, var componentx: uint = kanaler, var componenty: uint = kanalerog var scalex: antal = 5; //størrelsen af horisontal forskydning var scaley: antal = 1; //størrelsen af den lodrette forskydning var mode: string = displacementmapfiltermode.color; var farve: uint = 0, var alfa: antal = 0, tilbage til nye displacementmapfilter (mapbitmap, mappoint, componentx, componenty, scalex, scaley, tilstand, farve, alfa)), og denne funktion skaber blot forskydningen kort filter ved hjælp af bitmapdata fra vores staticmap image.det behøver ikke være i sin egen funktion, jeg bare gør det for klarhedens skyld. for at kunne arbejde, som vi er nødt til at importere disse klasser på toppen af vores jitterybutton klasse:, import flash.display.bitmapdata; import flash.display.bitmapdatachannel; import flash.filters.displacementmapfilter; import flash.filters.displacementmapfiltermode; import flash. geom. punkt;, du kan lære mere om de displacementmapfilter klasse i as3 dokumentation), punkt 14: anvendelse af filter, skal vi nu skaber en variabel til at holde filter.vi anvender det på knappen ved at fastsætte den knap er »filter« ejendomsret til et system, der indeholder vores filter. her er jitterybutton klasse så vidt (linjer, 18 og 25 er nye):, pakke (import flash.display.sprite; import flash.display.simplebutton; import flash.display.bitmapdata; import flash.display.bitmapdatachannel; import flash.filters.displacementmapfilter; import flash.filters.displacementmapfiltermode; import flash.geom.point; import caurina.transitions.tweener; offentlige klasse jitterybutton udvider sprite (private var mybutton: simplebutton; //skabe en variabel til at holde den forskydning kort filter private var dmfilter: displacementmapfilter = createdmfilter(); //klasse konstruktøren offentlige funct- jitterybutton (knap: simplebutton) (mybutton = knap; //anvende filter til knap mybutton.filters = nye system (dmfilter)} //skabe forskydning kort filter privat funktion createdmfilter(): displacementmapfilter {var mapbitmap: bitmapdata = nye staticmap (0,0); //bruger bitmap data fra vores staticmap image var. mappoint: punkt = det nye punkt (0, 0); //det er holdningen hos den staticmap billede i forhold til vores knap var kanaler: uint = bitmapdatachannel.red; //hvilken farve til brug for forskydning, var componentx: uint = kanaler, var componenty: uint = kanaler, var scalex: antal = 5 /størrelsen af den horisontale skift var /scaley:= 1; //størrelsen af den lodrette forskydning var mode: string = displacementmapfiltermode.color; var farve: uint = 0, var alfa: antal = 0, tilbage til nye displacementmapfilter (mapbitmap, mappoint, componentx, componenty, scalex, scaley, tilstand, farve, alfa)}}}, gå 15: prøve igen hvis vi redder og afprøve den fil, og nu kan vi se den forskydning kort filter anvendes til vores knap:,, kan du se, hvordan de horisontale linjer, som vi gjorde i staticmap omfordeler pixels i vores knappen til højre og venstre.størrelsen af den vagt er afhængige af mørket af linjer i det billede, og scalex indstilling i vores forskydning kort filter. desværre den statiske er ikke inspirerende, så det ser ret tamt.lad os ordne det nu... trin 16: tilføje randrange funktion, dette er en simpel funktion, der returnerer et tilfældigt tal inden for et bestemt område: //returnerer et tilfældigt tal mellem det interval, der er angivet (inklusive) privat funktion randrange (min: int, max. int): int (var - randomnum: europa.eu.int = matematik. etage (matematik. random() * (max. - min. + 1) + min. tilbage randomnum;}, finder jeg det gør det lidt lettere at skabe tilfældige værdier.vi vil være randomizing forskellige værdier for vores statisk virkning, så det vil komme i handy., lægger det til din jitterybutton klasse.,, skridt 17: stadig forskydning kort filter, der er to måder, vi kan stadig statisk virkning.den første vil være at ændre størrelsen af horisontal forskydning, der anvendes til vores knap.dette sker ved scalex ejendom af displacementmapfilter. vi kan også give næring til den holdning, den staticmap billede i forhold til vores knap.dette vil sikre, at de samme områder af knap er ikke altid blevet flyttet, animere den virkning, vi vil tilføje en funktion kaldes "displaystatic", der bliver kaldt hvert billede at ajourføre disse to egenskaber af filter.tilføje denne funktion til din jitterybutton klasse: //opfordrede enter_frame privat funktion displaystatic e: begivenhed): ugyldig (dmfilter.scalex = randrange (fuzzmin, fuzzmax); dmfilter.mappoint = det nye punkt (0, randrange (0 - 160)); mybutton.filters = nye system (dmfilter); den første linje af denne funktion randomizes størrelsen af horisontal forskydning til en værdi af de variabler, fuzzmin og fuzzmax.tilføje disse to variabler til din jitterybutton klasse: private var fuzzmin: int = 0, private var fuzzmax: int = 2, anden linje af displaystatic funktion randomizes y holdning til staticmap i forhold til vores knap.vi har allerede sagt det - at bruge vores staticmap billede, så vi bare nødt til at opdatere de holdning. den tredje linje lige gælder filteret på vores knap. den sidste ting, vi skal gøre for at få denne inspirerende at tilføje enter_frame begivenhed til at lytte.det svarer til jitterybutton konstruktøren funktion: //begynde med statisk virkning addeventlistener (event.enter_frame, displaystatic), og glem ikke at importere tilfælde klasse på toppen af jitterybutton fil:, import, flash. begivenheder. arrangement, gå 18: prøve igen, hvis du redder og prøvning film nu, vil du se den effekt, er, at vores knap flimren og spring:,, det er godt, men vi vil have den virkning, at reagere på mus som godt.fremad... skridt 19: tilpasse intensiteten af den virkning, vil vi nu tilføje to funktioner til at justere intensiteten af de jitterbug virkning.vi kalder den virkning, vi i øjeblikket har lav intensitet, så vi kan tilføje en ramme for mellemstore og store intensitet.tilføje disse funktioner til din jitterybutton klasse: //øge intensiteten af de statiske og mellemstore private funktion setstaticmedium e: mouseevent = null): ugyldig (fuzzmin = 2, fuzzmax = 6, staticlength = randrange (8 - 12)) //øge intensiteten af den statiske høje private funktion setstatichigh (e: mouseevent = null): ugyldig (fuzzmin = 12 fuzzmax = 25; staticlength = 12), kan de se, at vi er ved at tilpasse intensiteten ved at fastsætte værdier for fuzzmin og fuzzmax variabler.på denne måde vores displaystatic funktion vil udnytte disse nye værdier, når den fastsætter horisontal forskydning af filter. vi har også tilføjet en variabel ringede staticlength.vi bruger den til at fastsætte, hvor længe de mere intense virkning bør sidste (antallet af billeder), før de vendte tilbage til lav intensitet.tilføje denne variabel til din jitterybutton klasse og ændre deres displaystatic funktion som så: private var staticlength: int. //opfordrede enter_frame privat funktion displaystatic e: begivenhed): ugyldig (dmfilter.scalex = randrange (fuzzmin, fuzzmax); dmfilter.mappoint = det nye punkt (0, randrange (0 - 160)); mybutton.filters = det nye system (dmfilter); staticlength... og hvis (staticlength < = 0) (fuzzmin = 0, fuzzmax = 2), den nye kode formindskelser på den staticlength variable og genstarter fuzzmin og fuzzmax med lav intensitet værdier, når værdien af staticlength når nul.,, gå 20: oprettelse af det knap rollover kontanthåndterende virksomheder, for at gøre vores knap reagere på mus, vi er nødt til at tilføje to mus begivenhed lyttere og en begivenhed, functio kontaktpersonn for hvert. tilsættes mus lyttere i dennes funktion af det jitterybutton klasse: //add rollover begivenhed lyttere til knap mybutton. addeventlistener (mouseevent.roll_over, onbuttonrollover); mybutton. addeventlistener (mouseevent.roll_out, onbuttonrollout); nu skabe to tilfælde kontanthåndterende virksomheder, der er opført i disse to nye budgetposter.de går også i den jitterybutton klasse: //kaldte på knap roll_over privat funktion onbuttonrollover e: mouseevent): ugyldig (setstatichigh();} //kaldte på knap roll_out privat funktion onbuttonrollout e: mouseevent): ugyldig (setstaticmedium();}, til at gøre alt dette arbejde, vi bliver nødt til at importere mouseevent klasse. toppen af vores jitterybutton fil:, import, flash. begivenheder. mouseevent;, nu hvor vores knap opdager et roll_over omstændigheder vil kalde tilfælde kontaktperson, som i kalder vores setstatichigh funktion.denne funktion øger værdien af fuzzmin og fuzzmax (anvendt til fastsættelse af horisontal forskydning) for det tidsrum, der fastsættes af staticlength variabel.,, gå 21: tilføje omfang virkning, kan vi stoppe her.vores indflydelse er inspirerende pænt og reagerer på mus rollovers.jeg føler stadig, at der mangler noget her.lad os tilføje lidt mere kraft. du bliver nødt til at downloade tweener bibliotek for dette skridt, hvis du ikke allerede har det.sted den caurina "mappe i dit projekt fortegnelse og importere tweener klasser på toppen af din jitterybutton fil:, import caurina. overgange. tweener, tweener giver os mulighed for at tilføje nogle pæne afskalning virkninger med kun et par linier.vi kan tilføje en linje til hver af vores rollover begivenhed kontanthåndterende virksomheder: //kaldte på knap roll_over privat funktion onbuttonrollover e: mouseevent): ugyldig (tweener. addtween (mybutton, (scalex: 1.1: 5, overgang "easeoutelastic"}); setstatichigh();} //kaldte på knap roll_oout privat funktion onbuttonrollout e: mouseevent): ugyldig (tweener. addtween (mybutton, (scalex: 1: 5, overgang "easeoutelastic"}); setstaticmedium();}, her er vi tilføjer en informationskampagne for at rollover kontaktperson, at vægte den knap er scalex ejendom til 110% i 5 sekunder.vi bruger en elastisk overgang - at give det, at gynge.i lanceringen kontakt, vi er ved at gøre det samme i bakgear, skære det tilbage til 100%. du kan lære mere om, hvordan man bruger tweener i tweener dokumentation.,, skridt 22: tilføje sunde, det sidste, vi har brug for at foretage denne virkning, fuldstændig er at tilføje noget.jeg har lavet min lyd effekt i garage band.kan du lave dine egne eller forsøge at finde en online, når du har en, du kan lide, import, det ind i dit bibliotek og forbindelsen til eksport, som staticsound. at tilføje det til vores jitterybutton først, at vi er nødt til at importere lyden klasse:, import, flash. medier. godt, så vil vi sæt det (tilføje denne linje lige før dennes funktion): private var staticsound: sunde = nye staticsound(); i fornyelsen kontaktperson siger vi lyden til at spille: //kaldte på knap roll_over privat funktion onbuttonrollover e: mouseevent): ugyldig (tweener. addtween (mybutton, (scalex: 1.1. tid: 5, overgang "easeoutelastic"}); setstatichigh(); staticsound. play();}, nu er vi klar til at gå.test din film, og det burde virke.hvis din knap eller lyd virker ikke lige tjekke kilde filer for at se min afsluttet jitterybutton klasse.,, gå 23: tilføje flere knapper, det gode ved at bygge denne virkning som en separat klasse, det var vores knap, er, at vi sagtens kan genbruge det på andre knapper. hvis du vil tilføje flere knapper til dit spil menu bare skabe en ny knap og sætte den på scenen.giv det tilfælde navn "button2".så i deres dokument - klasse ("spil. som fil) skabe et nyt jitterybutton og give det ny knap.her er hvordan det ser måske:, pakke (import flash.display.movieclip; offentlige klasse spil udvider movieclip (private var startbutton: jitterybutton; private var menubutton: jitterybutton; //klasse konstruktøren offentlig funktion game() (//skabe nervøsitet knapper fra den simple knapper på scenen startbutton = nye jitterybutton (button1); addchild (startbutton); //at tilføje en ny knap er let.menubutton = nye jitterybutton (button2); addchild (menubutton)}}}, konklusion, du vil næsten helt sikkert nødt til at ændre denne kode lidt for at få det til at passe ind i strukturen i dit spil.forhåbentlig vil denne forelæsning vil give dig et godt udgangspunkt. hvis du ønsker at ændre den ud af denne virkning kan du prøve ved hjælp af forskellige typer af billeder til din staticmap grafisk, og tilpasse de værdier for fuzzmin og fuzzmax. det er min første forelæsning, så lad mig vide, hvis der er noget, jeg kan gøre det bedre næste tid.tak for det!,

displacement example
Flash file setup
button properties
set the document class
create a new image
add noise to the Noise layer
draw horizontal lines
save for web
import the image



Previous:
Next Page: