Send Julehilsener med blits Piano Christmas Card
Del
Del
Del
Del
Denne Cyber Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
Lei av disse gammeldagse animerte julekort med julenissen ler, en slede flyr på himmelen med en haug med trær og glitrende lys?
I år har ingen unnskyldning. Jeg skal vise deg hvordan du kan bygge et virtuelt tastatur som spiller Jingle Bells. Du vil selv være i stand til å utvide konseptet og legge til flere sanger og noter til piano.
For denne tut Jeg skal bruke en kombinasjon av Tweenlite, Flex SDK, Flash IDE og Flash Utvikle.
Trinn 1:. New File
Start Adobe Flash og opprette et Actionscript 3 Flash-fil
Trinn 2: Egenskaper
Åpne egenskapene og sette FPS til 30 og scenen størrelse 600 x 380px
Trinn 3:. Lag 1
Gi nytt navn lag 1 som "bakgrunn "og lage et hvitt rektangel av 580x360. Konvertere den til en MovieClip symbol som heter "frame_mc" og sette sin posisjon til x: 10 y:. 10
Trinn 4: Skygge
Legg til en skygge filter med følgende parametre:
Trinn 5: Keyboard Layer
Legg et nytt lag som heter "tastatur", lage en primitiv rektangel 60x190 med en 5 pixel hjrneradius og uten slag. Gjør det til en MovieClip symbol og kaller det "keybase_mc"
Trinn 6:. Refleksjon og Glow Layers
Hit F8 og skape en ny MovieClip kalt "key_mc". Lag to flere lag inne key_mc (foruten den som allerede er til stede med keybase_mc). Navngi dem: "refleksjon" og "glød". Kopier ramme til de nyopprettede lag
Trinn 7:. Glow_mc
MERK: Jeg har endret frame_mc farger for en stund for å tillate meg å se endringene på tastene. Velg MovieClip i skinnet laget, navnet "glow_mc", åpne filtre og redigere dem i henhold til bildet under:
Trinn 8: reflection_mc
Velg MovieClip i refleksjon lag, name it "reflection_mc", åpne filtre og redigere dem til å matche bildet under:
Trinn 9: base_mc
nå velge MovieClip i underlaget, den navnet "base_mc", åpen filtrene og redigere dem til å matche bildet under:
Trinn 10: Key
Kopier og lim nøkkelen til du ender opp med 7 tilfeller. Ordne dem jevnt over scenen
Trinn 11:.. Juster
Åpne justere verktøyet og klikk på "horisontal avstand" -ikonet
Trinn 12: Noter
< p> Lag et nytt layer, kall det "notater". Deretter skrive ned C D E F G A B på tastene legge til tekst til en ny MovieClip. Åpne MovieClip filtre og redigere dem slik som på bildet under:
Trinn 13: Tall
Lag et nytt layer, kall det "tall". Skriv tallene fra 1 til 7, vil dette representere tallene som du vil trykke på tastaturet for å gjøre ecard nøkkelen høydepunkt
Trinn 14: Flex SDK Sti
Gå til redigere >. preferanser > Action > Actionscript 3.0 innstillinger og finne din Flex SDK banen (du trenger dette for å legge filer direkte gjennom koden)
Trinn 15:. Flash Utvikle
Åpne Flash Utvikle (jeg bare bruker denne saken Jeg liker det så mye mer enn vanlig Actionscript editor fra blitsen IDE når du skriver pakker) og opprette 2 tomme AS3 filer. Navngi dem "Main.as" og "Background.as", lagre dem i samme mappe som FLA
Trinn 16:. Dokument Class
Inside Flash IDE satt Main.as som Document klasse
Trinn 17:. Autoplay Button
Opprett en autoplay MovieClip og gi den navnet "autoplay_mc". Dette vil være en autoplay-knappen
Trinn 18:. Snowflakes
For å lage noen snøflakene faller opprette en ny MovieClip, tegne en smal hvit sirkel inne og legge til en kobling identifikator for "Snowflake".
Trinn 19:. Main.as
I Flash Utvikle åpen Main.as, definere hovedklassen utvide en MovieClip og lage en funksjon som heter Hoved
Start med å importere disse Klasser inni pakken:
import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.display.StageScaleMode; import flash.events.KeyboardEvent; import flash.utils.Timer; import com.greensock.TweenLite; importere com.greensock.easing. *; import Bakgrunn; //vi vil skape en bakgrunn klasse basert på Perlin støy og en forvandle matrise sammen med noen få fylt former, slik at vi kan ha en fin myk overgang import Snow; //jeg bare tok kirupas snø og pakket det - > http://troyworks.com/blog/2008/11/26/flash-kirupa-snow-in-as30/import flash.media.Sound;
Trinn 20: Variabler
Inne klassen definere disse variablene:
//dette vil være vår bakgrunn privat Var _background: Bakgrunn; //dette vil være vår snøstorm private Var snø: snø; //- > notater //Innebygging denne måten krever FLEX SDK - > alternativ metode er å legge disse lydene til biblioteket og legge til en kobling ID til dem. [Legge (kilde = "eiendeler /A.mp3")] privat Div A: Klasse; privat Var en: Sound = new A () som Sound; [Legge (kilde = "eiendeler /B.mp3")] privat Var B: Klasse; private Var b: Sound = new B () som Sound; [Legge (kilde = "eiendeler /C.mp3")] privat Var C: Klasse; private Var c: Sound = new C () som Sound; [Bygg (kilde = "eiendeler /D.mp3")] privat Var D: Klasse; private Var d: Sound = new D () som Sound; [Legge (kilde = "eiendeler /E.mp3")] privat Var E: klasse; private Var e: Sound = new E () som Sound; [Bygg (kilde = "eiendeler /F.mp3")] privat Var F: Klasse; private Var f: Sound = new F () som Sound; [Legge (kilde = "eiendeler /G.mp3")] privat Var G: klasse; private Var g: Sound = new G () som Sound; //Lagring notene i en matrise vil gjøre det enklere å koble til tastatur private Var notater: Array = [c, d, e, f, g, a, b] //Note sekvens for musikken private Var noteSequence: Array = [f, f, f, f, f, f, f, a, d, e, f, g, g, g, g, g, e, e, d, b, a, f, d, c] //Nåværende notat som spilles private Var curnote: Antall = 0 //Sekvens av forsinkelsen at musikken må ha mellom notater private Var noteDelay: Array = [100, 100, 300, 100, 100, 300, 100, 100 , 100100200, 100, 100, 200, 90, 100, 90 100, 100, 120, 120, 120, 120, 300] //Timer for å spille av musikk private Var tunetimer: Timer = new Timer (noteDelay [0]); < h2> Trinn 21: Main ()
Hovedfunksjonen
//Hovedfunksjon venter på at den maintimeline som skal legges til scenen offentlig funksjon main (): void {addEventListener (Event.ADDED_TO_STAGE, addedToStage); }
Trinn 22: Initial
Etter å ha blitt lagt til scenen vil vi initial bakgrunnen og det virtuelle tastaturet:
//da lagt til scenen vi kan sette en scene skala modus, bakgrunn og den starter den virtuelle piano privat funksjon addedToStage (e: Hendelses): void {stage.scaleMode = StageScaleMode.NO_SCALE; addBackground (); startMachine (); }
Trinn 23: Bakgrunnseffekter
La oss sortere ut de bevegelige bakgrunn og Snow:
//legger bakgrunnen privat funksjon addBackground (): void {_background = new Bakgrunn (150 150); //grunnen størrelsen er mindre er fordi det er veldig CPU intensivt _background.x = 5; //for å gi en hvit margin for rammen _background.y = 5; _background.width = 570 //skalere det opp til størrelsen riktig størrelse _background.height = 350 frame_mc.addChild (_background); //legger bakgrunnen til rammen snø = ny snø (570, 350) //skaper en snøstorm eksempel
Trinn 24: Virtual Keyboard
initialisering av det virtuelle tastaturet
privat funksjon startMachine ( e: MouseEvent = null): void {//knytter tastatur hendelser stage.addEventListener (KeyboardEvent.KEY_DOWN, onkeydown) stage.addEventListener (KeyboardEvent.KEY_UP, onkeyUp) //knytter en autoplay metoden til den autoplay knappen autoplay_mc.addEventListener (MouseEvent .Klikk, startAutoPlay); autoplay_mc.buttonMode = true; //knytter notene til nøkler Var i: int = 0 while (i < 7) {denne ["nøkkel" + i] .Merk = notater [i] Jeg ++} //gjør høydepunktet av nøklene forsvinner lowlightKeys ( ); }
Trinn 25: Marker
Vi må lage en funksjon for å fjerne høydepunkt fra tastene:
private funksjons lowlightKeys () {var i: int = 0 while (i < 7) {TweenLite.to (dette ["nøkkel" + i] .glow_mc, 0.5, {alpha: 0}); i ++}}
Trinn 26: Viktige hendelser
La oss nå håndtere Key opp og Key ned hendelser:
privat funksjon onkeydown (e: KeyboardEvent): void {var i: int = 0 bryteren ( e.keyCode) {case 49: //keycode for en i = 0 break; Ved 50: //keycode for 2 i = 1 break; Ved 51: //keycode for 3 i = to break; Ved 52: //keycode for fire i = 3 break; Ved 53: //keycode for 5 i = 4 break; Ved 54: //keycode for 6 i = 5 break; Ved 55: //keycode for 7 i = 6 break; } Notater [i] Beskytt din Nintendo DS (); TweenLite.to (dette ["nøkkel" + i] .glow_mc, 0.5, {alfa: 1}); //streker nøkkelen} private funksjon onkeyUp (e: KeyboardEvent): void {var i: int = 0 bryteren (e.keyCode) {case 49: i = 0 break; Ved 50: i = 1 break; Ved 51: i = to break; Ved 52: i = 3 break; Ved 53: i = 4 break; Ved 54: i = 5 break; Ved 55: i = 6 break; } TweenLite.to (dette ["nøkkel" + i] .glow_mc, 0.5, {alpha: 0}); //lavmål nøkkelen}
Trinn 27: Autokjør funksjoner
Hvordan starte og stoppe autoplay
privat funksjon startAutoPlay (e: MouseEvent = null) {curnote = 0; //hver gang jeg starter autoplay jeg tilbakestille gjeldende spille notat tunetimer.delay = noteDelay [curnote] * 3 //dette øker forsinkelsen satt tidligere tunetimer.addEventListener (TimerEvent.TIMER, autoPlayTune) //legger en lytter til timeren arrangement for hver gang timeren utløses tunetimer.start () //starter timeren} privat funksjon stopAutoPlay (e: MouseEvent = null) {tunetimer.stop () //stopper timeren tunetimer.removeEventListener (TimerEvent.TIMER, autoPlayTune) //fjerner hendelse}
Trinn 28: Update
Oppdatering av virtuelle tastaturet sammen med musikken
privat funksjon updateMachine (): void {lowlightKeys (); //Tilbake nøklene høydepunkter Var i: int = 0 while (i < 7) {if (dette ["nøkkel" + i] .Merk == noteSequence [curnote]) {TweenLite.to (dette ["nøkkel" + i] .glow_mc, 0.5, {alfa: 1}); //hvis gjeldende notat er det én associeated med nøkkelen da fremhever det} i ++} curnote ++ //går til neste note if (curnote > noteSequence.length) {curnote = 0; //nullstiller gjeldende notat stopAutoPlay (); //stopper autoplay}}
Trinn 29: The Complete Kode
Her er den fulle Main.as kode
pakke {import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.display.StageScaleMode; import flash.events.KeyboardEvent; import flash.utils.Timer; import com.greensock.TweenLite; importere com.greensock.easing. *; import Bakgrunn; import Snø import flash.media.Sound; public class Hoved strekker MovieClip {private Var _background: Bakgrunn; private Var snø: snø; [Legge (kilde = "eiendeler /A.mp3")] privat Div A: Klasse; privat Var en: Sound = new A () som Sound; [Legge (kilde = "eiendeler /B.mp3")] privat Var B: Klasse; private Var b: Sound = new B () som Sound; [Legge (kilde = "eiendeler /C.mp3")] privat Var C: Klasse; private Var c: Sound = new C () som Sound; [Bygg (kilde = "eiendeler /D.mp3")] privat Var D: Klasse; private Var d: Sound = new D () som Sound; [Legge (kilde = "eiendeler /E.mp3")] privat Var E: klasse; private Var e: Sound = new E () som Sound; [Bygg (kilde = "eiendeler /F.mp3")] privat Var F: Klasse; private Var f: Sound = new F () som Sound; [Legge (kilde = "eiendeler /G.mp3")] privat Var G: klasse; private Var g: Sound = new G () som Sound; private Var notater: Array = [c, d, e, f, g, a, b] privat Div noteSequence: Array = [f, f, f, f, f, f, f, a, d, e, f, g, g, g, g, g, e, e, d, b, a, f, d, c] privat Div curnote: Nummer = 0 privat Div noteDelay: Array = [100, 100, 300, 100, 100, 300, 100, 100, 100 100 200, 100, 100, 200, 90, 100, 90 100, 100, 120, 120, 120, 120, 300] private Var tunetimer: Timer = new Timer (noteDelay [0]); offentlig funksjon main (): void {addEventListener (Event.ADDED_TO_STAGE, addedToStage); } Private funksjon addedToStage (e: Hendelses): void {stage.scaleMode = StageScaleMode.NO_SCALE; addBackground (); startMachine (); } //Legger bakgrunnen privat funksjon addBackground (): void {_background = new Bakgrunn (150 150); _background.x = 5; _background.y = 5; _background.width = 570 _background.height = 350 frame_mc.addChild (_background); snø = ny snø (570, 350); frame_mc.addChild (snø); } Private funksjon startMachine (e: MouseEvent = null): void {stage.addEventListener (KeyboardEvent.KEY_DOWN, onkeydown) stage.addEventListener (KeyboardEvent.KEY_UP, onkeyUp) autoplay_mc.addEventListener (MouseEvent.CLICK, startAutoPlay); autoplay_mc.buttonMode = true; Var i: int = 0 while (i < 7) {denne ["nøkkel" + i] .Merk = notater [i] i ++} lowlightKeys (); } Private funksjon lowlightKeys () {var i: int = 0 while (i < 7) {TweenLite.to (dette ["nøkkel" + i] .glow_mc, 0.5, {alpha: 0}); i ++}} privat funksjon onkeydown (e: KeyboardEvent): void {var i: int = 0 bryteren (e.keyCode) {case 49: i = 0 break; Ved 50: i = 1 break; Ved 51: i = to break; Ved 52: i = 3 break; Ved 53: i = 4 break; Ved 54: i = 5 break; Ved 55: i = 6 break; } Notater [i] Beskytt din Nintendo DS (); TweenLite.to (dette ["nøkkel" + i] .glow_mc, 0.5, {alfa: 1}); } Private funksjon onkeyUp (e: KeyboardEvent): void {var i: int = 0 bryteren (e.keyCode) {case 49: i = 0 break; Ved 50: i = 1 break; Ved 51: i = to break; Ved 52: i = 3 break; Ved 53: i = 4 break; Ved 54: i = 5 break; Ved 55: i = 6 break; } TweenLite.to (dette ["nøkkel" + i] .glow_mc, 0.5, {alpha: 0}); } //Auto Play FUNKSJONER privat funksjon startAutoPlay (e: MouseEvent = null) {curnote = 0; tunetimer.delay = noteDelay [curnote] * 3 tunetimer.addEventListener (TimerEvent.TIMER, autoPlayTune) tunetimer.start ()} privat funksjon stopAutoPlay (e: MouseEvent = null) {tunetimer.stop () tunetimer.removeEventListener (TimerEvent.TIMER, autoPlayTune)} privat funksjon autoPlayTune (e: Timerevent) {if (curnote < noteSequence.length) {noteSequence [curnote] Beskytt din Nintendo DS (); //spiller notatet tunetimer.delay = noteDelay [curnote] * 3} updateMachine ()} privat funksjon updateMachine (): void {lowlightKeys (); Var i: int = 0 while (i < 7) {if (dette ["nøkkel" + i] .Merk == noteSequence [curnote]) {TweenLite.to (dette ["nøkkel" + i] .glow_mc, 0.5 {alpha: 1}); } I ++} curnote ++ if (curnote > noteSequence.length) {curnote = 0; stopAutoPlay (); }}}}
Trinn 30: Bakgrunn Class
Nå videre til bakgrunnen klassen. Vi begynner ved å importere disse klassene ..
import flash.display.Shape; import flash.events.Event; import flash.display.Sprite; import flash.display.MovieClip; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMode; import flash.geom.ColorTransform; import flash.geom.Rectangle; import flash.geom.Point; import flash.geom.Matrix; import flash.filters.ColorMatrixFilter; import flash.display.GradientType; import flash.display.Graphics; import flash.display.InterpolationMethod; import flash.display.SpreadMethod;
Trinn 31: Variabler
.. da definere variabler:
//Noise private Var dir: Array private Var Punkt: Point privat Var bd: BitmapData; private Var bmp: Bitmap; private Var bdmultiply: BitmapData; private Var bms: Sprite; private Var rect: rektangulært private Var CMF: ColorMatrixFilter; private Var w: Antall private Var h: Antall //Lineær Gradient Fill privat Var gshape: Shape private Var gmetrics: rektangulært private Var gmatrix: Matrix private Var gtype: String private Var gspread: String private Var ginterpolation: String private Var gcolours: Array private Var galphas: Array private Var gratios: Array //Solid Fill privat Var sshape: Shape
Trinn 32: Initial Funksjon
Her er den opprinnelige funksjon:
offentlig funksjon Bakgrunn ($ bredde: Number = 100, $ høyde: Number = 100) {w = $ bredde h = $ høyde rect = new rektangel (0, 0, w, h); punkt = new Point (0, 0); dir = [ny Point (1, 262), nytt punkt (400, 262)]; //dette er bare for å gi et fast stoff bakgrunn til hele scenen initBackgroundSolid (); //dette vil kontrollere bightness kontrast og metning av støy initColorMatrix (); //det vil være to støybakgrunn dette vil starte dem initBackgroundNoise (); //en gradient er lagt slik at vi ikke får noisiated .. (? få det for mye støy blir du noisiated haha ... hmmm?) initBackgroundGradient (); }
Trinn 33:. initColorMatrix ()
Denne funksjonen vil kontrollere bightness kontrast og metning av støy, er det en meget kraftig filter
privat funksjon initColorMatrix (): void {CMF = new ColorMatrixFilter ([2, 0, 0, 0, -20, //red 0, 2, 0, 0, -20, //grønn 0, 0, 2, 0, -20, //blå 0, 0, 0, 1, -20]); //alpha}
Trinn 34:. Solid bakgrunnsfarge
Dette er bare for å gi en solid bakgrunn til hele scenen
privat funksjon initBackgroundSolid (): void {sshape = new Shape (); sshape.graphics.beginFill (0x170a02,1) sshape.graphics.drawRect (0, 0, w, h); sshape.graphics.endFill (); addChild (sshape)}
Trinn 35: lyder
De lyder:
privat funksjon initBackgroundNoise (): void {//første støy bd = new BitmapData (w, h, falsk, 0); bmp = new Bitmap (bd); bmp.smoothing = true; addChild (bmp); //andre støy som overlapper den første støy gjennom et overlegg blanding modus bdmultiply = nye BitmapData (w, h, falsk, 0); bms = new Sprite (); bms.addChild (ny Bitmap (bdmultiply)) addChild (BMS) bms.blendMode = "overlay"; //gjør bakgrunnen slik at støyen synes å være å flytte addEventListener (Event.ENTER_FRAME, renderBG); }
Trinn 36: Mask
Her er gradient maske:
privat funksjon initBackgroundGradient () {//dette er en grunnleggende gradient boks med alfa og roteres 90º, slik at den starter fra topp-bunn i stedet fra venstre-høyre gshape = new Shape (); gmetrics = new rektangel (); gmatrix = new Matrix (); gtype = GradientType.LINEAR; gspread = SpreadMethod.PAD; ginterpolation = InterpolationMethod.LINEAR_RGB; gcolours = [0x170a02, 0x170a02]; galphas = [0, 1]; gratios = [0, 255]; gmatrix.createGradientBox (w, h, (Math.PI /180) * 90); gshape.graphics.clear (); gshape.graphics.beginGradientFill (gtype, gcolours, galphas, gratios, gmatrix, gspread, ginterpolation); gshape.graphics.drawRect (0, 0, w, h); gshape.graphics.endFill (); addChild (gshape)}
Trinn 37: Render
Det er render tid
privat funksjon renderBG (hendelse: Hendelse): void {//oppdateringer støy retning dir [0] .x- = 1,5 dir [0] .y- = 0 //disse er her for deg å spille med dir [1] .x- = 0 //disse er her for deg å spille med dir [1] .Y - = 0 //disse er her for deg å spille med //definerer første bakgrunnen bitmap å ha en Perlin støy bd.perlinNoise (w, h, 2, 10, falsk, sant, 7, sant, dir); //fargelegging tid (leke med disse verdiene) bd.colorTransform (rect, ny ColorTransform (1, 0,7, 0,5)); //aplies de brigthness kontrast og fargemetning endringer gjort tidligere bd.applyFilter (bd, rect, punkt, CMF) //den andre Perlin støy bdmultiply.perlinNoise (w, h, 3, 21, falsk, sant, 7, sant, dir ) //den andre Perlin støy collors bdmultiply.colorTransform (rect, ny ColorTransform (1, 0,6, 0,4)); }
Trinn 38: Komplett Bakgrunn Class
Her er hele bakgrunnen Klasse:
pakke {import flash.display.Shape; import flash.events.Event; import flash.display.Sprite; import flash.display.MovieClip; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMode; import flash.geom.ColorTransform; import flash.geom.Rectangle; import flash.geom.Point; import flash.geom.Matrix; import flash.filters.ColorMatrixFilter; import flash.display.GradientType; import flash.display.Graphics; import flash.display.InterpolationMethod; import flash.display.SpreadMethod; public class Bakgrunn strekker MovieClip {private Var dir: Array private Var Punkt: Point private Var bd: BitmapData; private Var bmp: Bitmap; private Var bdmultiply: BitmapData; private Var bms: Sprite; private Var rect: rektangulært private Var CMF: ColorMatrixFilter; private Var w: Antall private Var h: Antall private Var gshape: Shape private Var gmetrics: rektangulært private Var gmatrix: Matrix private Var gtype: String private Var gspread: String private Var ginterpolation: String private Var gcolours: Array private Var galphas: Array private Var gratios: Array private Var sshape: Shape offentlig funksjon Bakgrunn ($ width: Number = 100, $ høyde: Nummer = 100) {W = $ bredde h = $ høyde rect = new rektangel (0, 0, w, h); punkt = new Point (0, 0); dir = [ny Point (1, 262), nytt punkt (400, 262)]; initBackgroundSolid (); initColorMatrix (); initBackgroundNoise (); initBackgroundGradient (); } Private funksjon initColorMatrix (): void {CMF = new ColorMatrixFilter ([2, 0, 0, 0, -20, //red 0, 2, 0, 0, -20, //grønn 0, 0, 2, 0 , -20, //blå 0, 0, 0, 1, -20]); //alpha} privat funksjon initBackgroundSolid (): void {sshape = new Shape (); sshape.graphics.beginFill (0x170a02,1) sshape.graphics.drawRect (0, 0, w, h); sshape.graphics.endFill (); addChild (sshape)} privat funksjon initBackgroundNoise (): void {bd = new BitmapData (w, h, falsk, 0); bmp = new Bitmap (bd); bmp.smoothing = true; addChild (bmp); bdmultiply = new BitmapData (w, h, falsk, 0); bms = new Sprite (); bms.addChild (ny Bitmap (bdmultiply)) addChild (BMS) bms.blendMode = "overlay"; addEventListener (Event.ENTER_FRAME, renderBG); } Private funksjon initBackgroundGradient () {gshape = new Shape (); gmetrics = new rektangel (); gmatrix = new Matrix (); gtype = GradientType.LINEAR; gspread = SpreadMethod.PAD; ginterpolation = InterpolationMethod.LINEAR_RGB; gcolours = [0x170a02, 0x170a02]; galphas = [0, 1]; gratios = [0, 255]; gmatrix.createGradientBox (w, h, (Math.PI /180) * 90); gshape.graphics.clear (); gshape.graphics.beginGradientFill (gtype, gcolours, galphas, gratios, gmatrix, gspread, ginterpolation); gshape.graphics.drawRect (0, 0, w, h); gshape.graphics.endFill (); addChild (gshape)} privat funksjon renderBG (hendelse: Hendelse): void {dir [0] .x- = 1,5 dir [0] .y- = 0 dir [1] .x- = 0 dir [1] .Y - = 0 bd.perlinNoise (w, h, 2, 10, falsk, sant, 7, sant, dir); bd.colorTransform (rect, ny ColorTransform (1, 0,7, 0,5)); bd.applyFilter (bd, rect, punkt, CMF) bdmultiply.perlinNoise (w, h, 3, 21, falsk, sant, 7, sant, dir) bdmultiply.colorTransform (rect, ny ColorTransform (1, 0,6, 0,4)); }}}
Trinn 39: Snø
Snøen klassen er ikke min, det var skrevet av Troy Gardner, jeg bare tilpasset den fra tidslinjen til en pakke dette er grunnen til at jeg ikke kommenterer på kode. Lag en "Snow.as" og kopiere denne koden inne
pakke {import flash.display.MovieClip.; import flash.events.Event; import flash.utils.Dictionary; public class snø strekker MovieClip {var snøflak: Array = new Array (); Var snowflakeProps: ordbok = new ordbok (true); Var max_snowsize: Number = 0,04; //Piksler Var snowflakesCnt: Nummer = 150; Var oheight: Number; Var owidth: Number; offentlig funksjon Snø ($ bredde, $ høyde): void {owidth = $ bredde; oheight = $ høyde; //Antall for (var i: int = 0; i < snowflakesCnt; i ++) {var t: MovieClip = new SnowFlake (); //t.name = "snøfnugg" + i; t.alpha = 20 + Math.random () * 60; t.x = - (owidth /2) + Math.random () * (1,5 * owidth); hets = - (oheight /2) + Math.random () * (1,5 * oheight); t.scaleX = t.scaleY = 0,5 + Math.random () * (max_snowsize * 10); Var o: Object = new Object (); o.k = 1 + Math.random () * 2; o.wind = -1,5 + Math.random () * (1,4 * 3); snowflakeProps [t] = o; addChild (t); snowflakes.push (t); } AddEventListener (Event.ENTER_FRAME, snowFlakeMover)} privat funksjon shakeup (): void {for (var i: int = 0; i < snowflakes.length, jeg ++) {var t: MovieClip = snøflak [i] som MovieClip; t.x = - (owidth /2) + Math.random () * (1,5 * owidth); hets = - (oheight /2) + Math.random () * (1,5 * oheight); }} Privat funksjon snowFlakeMover (evt: Hendelses): void {var GJØRE: MovieClip; Var o: Object; if (synlig & & parent.visible) {for (var i: int = 0; i < snowflakes.length; i ++) {DO = snøflak [i] som MovieClip; o = snowflakeProps [DO]; dO.y + = o.k; dO.x + = o.wind; if (dO.y > oheight + 10) {dO.y = -20; } If (dO.x > owidth + 20) {dO.x = - (owidth /2) + Math.random () * (1,5 * owidth); dO.y = -20; } Else if (dO.x < -20) {dO.x = - (owidth /2) + Math.random () * (1,5 * owidth); dO.y = -20; }}}}}}
Konklusjon
Min musikk ferdigheter er ikke den største, kan musikken høres litt rart. Nåvel, med denne opplæringen bør du nå være i stand til å lage dine egne sanger med flere notater og forskjellige toner :). Jeg håper du likte denne opplæringen, vil du finne kommen kode og både CS4 og CS3 versjoner opp på zip-filen. Takk for lesing!