Kosmiske bilder brukes på mange nettsteder som bakgrunnsbilde. Disse bildene er utvilsomt vakre, men tross alt er de fortsatt bilder som gir liten livlighet. Med jQuery kan vi bringe et fortsatt kosmisk bilde tretti liv ved å legge til noe romstøv (partikler) som flyr som ildfluer. I denne veiledningen ser vi hvordan du implementerer denne effekten på 30 minutter. Vi lærer også en del objektorienterte Javascript-teknikker.
Vi vil se på denne kosmiske bakgrunnen i ganske lang tid. For å gjøre øynene våre mer komfortable, brukes et mørkt og enkelt bilde som bakgrunn i denne opplæringen. Du er velkommen til å bruke mer fargerike bilder i dine egne prosjekter.
For å få denne effekten til å se mer realistisk, har vi fire modeller av partikler i denne opplæringen. De er små bilder med forskjellig størrelse og utseende. Se på figuren under for mer informasjon:
I motsetning til de fleste opplæringsprogrammer, er det bakgrunnen til en nettside som vi skal fokusere i dag, noe som gjør HTML ganske enkelt:
Firefly-effekten
La oss nå se nærmere på partikkelens liv. Hver partikkel kan variere i utseende. Og de beveger seg i forskjellige hastigheter og retninger. Men de følger alle de samme reglene som kan beskrives som en rekke handlinger:
Hver partikkel følger nøyaktig disse åtte trinnene gjennom hele levetiden. Og tilfeldige faktorer, for eksempel posisjon og hastighet, gjør hver partikkel oppfører seg på en unik måte. Dette er et perfekt tilfelle for å implementere noen objektorienterte programmeringsteknikker. La oss pakke disse åtte trinnene i en "klasse" som vil bli instantiated mange ganger for å opprette flere forekomster av samme logikk. Hver forekomst (partikkel) går i en separat kjørefelt og har sin egen hastighet og retning.
Det er viktig å merke seg at det ikke er noen klasser i JavaScript. Funksjoner kan brukes til å noe simulere klasser, men generelt er JavaScript prototypebasert i stedet for klassebasert. Alt er et objekt. For mer informasjon om hvordan du definerer og instanser en JavaScript-klasse, vennligst sjekk disse artiklene.
I denne effekten defineres en "klasse" og deretter instantieres 50 ganger med følgende kode.
funksjon Partikkel () // 1. Velg en partikkelmodell tilfeldig. // 2. Opprett en DOM for denne partikkelen. // 3. Generer en tilfeldig hastighet for denne partikkelen. // 4. Generer startposisjonen (punkt X og punkt Y) for denne partikkelen. // 5. Vis partikkelen på stillingen generert i 4. // 6. Generer en annen posisjon (punkt X og punkt Y) som partikkelen beveger seg på. // 7. Animer partikkelbevegelsen til stillingen generert i 6. // 8. Gjenta 6 og 7 når animasjonen nevnt i 7 er ferdig. ; funksjon randomInt (max) // Generer et tilfeldig heltall (0 <= randomInt < max) return Math.floor(Math.random() * max); $(function() var total = 50; var particles = []; for (i = 0; i < total; i++) particles[i] = new Particle(); );
I denne delen skal vi definere egenskaper og metoder for partikkeltaket. Og vi vil se hvordan du tilfeldigvis velger en partikkelmodell.
Vi kan bruke "dette'søkeord for å definere egenskaper for en' klasse '. Når det gjelder å definere metoder,prototype'eiendom er veien å gå. Se koden under og vi gir noen forklaringer.
funksjon Partikkel () this.path = 'images /'; this.images = ['particle1.png', 'particle2.png', 'particle3.png', 'particle4.png']; / Tilfeldig Velg en partikkelmodell this.image = this.images [randomInt (this.images.length)]; this.file = this.path + this.image; // Opprett en partikkel DOM this.element = document.createElement ('img'); // En rekke handlinger for å ta denne.speed (). NewPoint (). Display (). NewPoint (). Fly (); ; // Generer en tilfeldig hastighet Particle.prototype.speed = funksjon () ; // Generer en tilfeldig posisjon Particle.prototype.newPoint = funksjon () ; // Vis partikkelpartikkelen.prototype.display = funksjon () ; // Animer partikkelbevegelser Particle.prototype.fly = function () ;
Faktisk er det mange forskjellige måter å definere egenskaper og metoder for en Javascript-klasse. Her er en flott artikkel om dette emnet.
Nå har vi en ide om hvordan denne effekten fungerer. Fra denne delen begynner vi å skrive funksjoner som vi bruker til å manipulere bevegelsen av en partikkel.
Først, la oss generere en tilfeldig hastighet for en partikkel. Hastigheten bestemmer hvor fort en partikkel reiser. Hvis du er kjent med jQuery, forstår du at vi ikke bare kan passere i sann fart, si 100 piksler per sekund. Faktisk er parameteren som brukes til å beskrive hastighet i jQuery, varighet målt i millisekunder. Så spørsmålet blir hvordan man genererer en rimelig varighet der en partikkel reiser fra ett sted til et annet. Hva med følgende kode?
// Generer Tilfeldig Speed Particle.prototype.speed = funksjon () this.duration = (randomInt (10) + 5) * 1000; returnere dette; ;
Et tilfeldig sett med X-Y-posisjon er meget nyttig i denne effekten. Det kan brukes til å bestemme:
Her er koden vi trenger for å generere et tilfeldig sett med X-Y-posisjon.
// Generer en tilfeldig posisjon Particle.prototype.newPoint = funksjon () this.pointX = randomInt (window.innerWidth - 100); this.pointY = randomInt (window.innerHeight - 100); returnere dette; ;
Størrelsen på det nåværende nettleservinduet kan hentes fra window.innerWidth og window.innerHeight. Hvis en partikkel flyr bortover vinduets grense, vil rullefeltene dukke opp. Vi vil kanskje ikke at det skal skje. Så la oss begrense partikkelbevegelsen i et område som er 100 piksler mindre høyt og bredt enn nettleservinduet. Ovennevnte kode skal være ganske enkel. Etter at denne funksjonen er utført, pointX og spisse eiendommer blir tilgjengelige. Når funksjonen kjører en gang til, pointX og spisse vil bli fornyet i tilfelle av partikkel~~POS=TRUNC.
I tidligere seksjoner ble en img DOM allerede opprettet for en ny partikkel. Nå skal vi sette noen attributter og vise partikkelen et sted i nettleservinduet. Dette oppnås med følgende kode.
// Vis partikkelpartikkelen.prototype.display = funksjon () $ (this.element) .attr ('src', this.file) .css ('posisjon', 'absolutt') .css ('topp' this.pointY) .css ('left', this.pointX); $ (Document.body) .append (this.element); returnere dette; ;
Til slutt har vi kommet til animasjonsdelen som kan bli enklere enn du trodde.
Animate-funksjonen i jQuery vil gjøre kunsten for oss. Det tar fire parametere: animere (parameter, varighet, lettelse, tilbakeringing). Sjekk ut dokumentasjonen hvis du ikke har noen anelse om hva den gjør.
// Animere partikkelbevegelser Particle.prototype.fly = function () var self = this; $ (this.element) .animate ("top": this.pointY, "left": this.pointX,, this.duration, "lineær", funksjonen () self.speed (). newPoint (). fly ();); ;
Hva koden ovenfor gjør er ganske enkelt:
Så fly() funksjonen kaller seg gjentatte ganger. Med denne rekursive funksjonen går animasjonen på og av for alltid. Nå er vi i stand til å skrive hele historien om et partikkels liv. Fortsett husk følgende kjede?
. This.speed () Newpoint () skjerm () Newpoint () fly ()...;
La oss se på hva det gjør:
Hvis disse trinnene høres ut som en tunge twister til deg ... Vel, se på denne figuren igjen. Du bør kunne kode hvert enkelt trinn nå. Og du bør vite hvordan å organisere alle ting i en objektorientert struktur. Endelig er firefly-effekten fullført.
Nå skal alle kunne implementere denne effekten i dine egne prosjekter. Forhåpentligvis har du også en bedre forståelse av objektorientert Javascript.
Den første ting jeg elsker om denne effekten er at ved å endre bakgrunns- og partikkelbilder, kan du produsere helt annet utseende. Du kan ha fly eller til og med supermenn som flyr på nettsiden din hvis du vil. Din fantasi er grensen.
Det er alt for denne opplæringen. Håper du nyter det. Takk for at du leste!