Vuurwerk (web animatie) (versie 1.0)


Klik op de link om te kijken naar het vuurwerk animatie (Vuurwerk animatie).

Dit project is een animatie van vuurwerk heeft meer dan 8 uur werk om te maken. Als u wilt bekijken van de animatie, volg deze link met een andere browser dan Internet Explorer. Ik zou ook waarderen uw steun in de instructables technologie contest.

Hier is een link voor een jsfiddle met commentaar bij de code toegevoegd aan bijna elke tekstregel JavaScript Javascript georiënteerde mensen lezen langs te laten. Vuurwerk animatie met commentaar notes.

Uit bezorgdheid voor het hoge CPU-gebruik in reactie op de computer van verwerking van deze webpagina, mij een vraag gesteld over code review stackexchange die u kunt lezen hier. Het antwoord dat ik gekregen stelde voor om het gebruik van canvas of requestAnimationFrame(); (native javascriptfunctie) om te voorkomen dat het gebruik van alle de timers die gebruikmaakt van dit script. Ik denk dat ik zal leren doek al snel, omdat browsers zijn uiteraard niet gebouwd om het verwerken van animaties zoals dit in het DOM (document objectmodel [ wikipedia DOM artikel ]) alleen te kunnen.

Bent u niet vloeiend in JavaScript, kunt u begrijpen hoe dit werkt door lezing hieronder.

De sterren:

Wanneer de pagina wordt geladen, functie-initialize(); heet waarin alles. Het begint met het opzetten van de sterren op de achtergrond door het creëren van een ster met willekeurige x y coördinaten langs de viewport breedte en hoogte. Het maakt een ster voor elke pixel dat de viewport breed is.

Viewport is het zichtbare gedeelte van de pagina. Viewport breedte is de breedte van het zichtbare gedeelte van de pagina en viewport hoogte is de hoogte van het zichtbare gedeelte van de pagina.

Hier is de lange definitie van "viewport" viewport wikipedia-artikel. De korte definitie is dat de viewport het gebied van de zichtbare hoogte van de pagina is (vermenigvuldigd) het zichtbare breedte van de pagina.

De ster is dan willekeurig gepositioneerd binnen de viewport.

De oprichting van het vuurwerk:

Het vuurwerk worden gemaakt nadat de sterren hebben gebeëindigde komend te zijn :)

Elke vuurwerk is 100px onder de viewport (zodat je het niet kunt zien) en een willekeurige x-coördinaat en een willekeurige kleur is toegewezen. Elke vuurwerk krijgt ook 12 stralen (ze opdagen wanneer het vuurwerk ontploft). Aan de bovenkant van het document, worden de variabelen ingesteld zodat de rotatie en x-en y-positie van elke vuurwerk Vleug, ten opzichte van het vuurwerk. Deze posities en rotatie worden toegewezen aan elke straal van het vuurwerk.

Als de browser filter:blur() ondersteunt; een onscherpe achtergrond is gemaakt voor het vuurwerk.

Vuurwerk timingfuncties en animatie:

Na al het vuurwerk zijn gemaakt, de functie-fireworkTiming(); heet. Deze functie doorlopen elke vuurwerk en roept de geneste functie-createTimer();. Dit geneste functie maakt een enigszins verschillende timer voor elke vuurwerk en wanneer de timer verloopt, het gegeven vuurwerk wordt geanimeerd tussen 7/10ths en 9/10ths van de hoogte van de viewport. Als al het vuurwerk werden geanimeerd, zij alle teruggezet naar hun oorspronkelijke toestand met nieuwe positie en Kleurtoewijzingen. Na het vuurwerk wordt verzonden in de "lucht", een functie genaamd explodeTimer(); heet waardoor een timer die op het vuurwerk wacht aan bijna klaar bent met de animatie die gooit het in de lucht en vervolgens breidt de vuurwerk-stralen en voegt de onscherpe achtergrond zodat het lijkt alsof het is ontploft. Een timer voor 800 milliseconden is ingesteld en wanneer die tijd is, de gehele vuurwerk begint te vervagen.

Grootte functie:

Wanneer de grootte van het browservenster wordt gewijzigd, moeten verschillende dingen gebeuren om ervoor te zorgen dat fireworks of sterren nog steeds het gewenste gedrag. Ten eerste zijn de viewport breedte en hoogte variabelen instellen, zodat alle van de andere berekeningen die eerder besproken die afhankelijk van deze variabelen nauwkeurig zijn. Aangezien de gebeurtenis resize een terugkerende gebeurtenis is en soms tientallen keer branden wanneer het formaat van de browservensters en om je beter rendement dan om opnieuw alles op elke grootte, er is een timer setup die zullen alleen het noemen van de initialize(); functie 100 milliseconden na de allerlaatste resize, gebeurtenis, waardoor volledige overbelasting van de browser proberen bij te houden met de anders overweldigende code.

Gerelateerde Artikelen

Het orakel.

Het orakel.

De toekomst.Oracle: een dwaze opdrachtregel spel in bash. Niets te maken met het bedrijf. Het programma is bedoeld voor opdrachtregel gebruikers van linux en enz. Grote partij spelletje gebaseerd op het idee van het orakel van de zwarte bal om de toe
Plastic emmer 3D-Scanner voor 123D vangst

Plastic emmer 3D-Scanner voor 123D vangst

Bouw uw eigen 3D-scanner op de goedkope! Helemaal u nood zit minder dan $50 van ijzerhandel materialen, een digitale camera en 123D vangst.Waarom een plastic emmer? 123D vangst werkt best met behulp van foto's genomen rond een object onder goede lich
Een Raspberry Pi PC bouwen voor minder dan $140

Een Raspberry Pi PC bouwen voor minder dan $140

Maak een Raspberry Pi gebaseerde PC met aanvaardbare prestaties tegen een lage prijs.Mijn zoon leert junior high en high school wetenschap. Zijn science lab heeft 6 doorschijnende blauwe iMAC-computers. Volgens Wikipedia, heeft Apple iMac G3s tussen
Hoe maak je een wereld van Warcraft Private Server

Hoe maak je een wereld van Warcraft Private Server

goed, ik ben nieuw bij deze, dus neem aub met mij als ik u hoe het maken van uw eigen wereld tonen van Warcraft Private Server!Dit zou moeten werken als u volledig mijn aanwijzingen volgen. Bedankt voor het lezen van dit, en veel geluk =))--{[mijn ee
Mech Cockpit Sim schaal Mockup in 3D

Mech Cockpit Sim schaal Mockup in 3D

dit instructable zal u tonen hoe ik een schaalmodel gemaakt in 123D Design op een iPad2.  Dit schaalmodel zullen de blauwdrukken van soorten die ik gebruiken zal om te bouwen van een werkelijke mech stijl cockpit te simuleren wordt binnen de mech die
3D Fab(ulous) Lipstick geval

3D Fab(ulous) Lipstick geval

ik ben niet een software engineer en heb nog nooit gebruikt een 3D modeling pakket. Persoonlijk ben ik veel meer van een hands-on meisje, in automotoren en werktuigmachines. Fysieke dingen, met andere woorden.Lipstick is fysieke. Het merk ik gebruik
Het licht van de ei - Wake-up Light aangesloten op smartphone

Het licht van de ei - Wake-up Light aangesloten op smartphone

Allereerst zou ik willen worden sorry voor mijn beginner Engels, ik zal proberen uit te leggen mijn project duidelijk mogelijk met mijn best "Frans" Engels!Het eerste doel van dit project was om een licht dat nabootsen van de zonsopgang.Nieuwe f
Raspberry webserver verzenden gegevens ophalen met Arduino Nano rijden 6 servo's

Raspberry webserver verzenden gegevens ophalen met Arduino Nano rijden 6 servo's

http://www.YouTube.com/watch?v=f7oSqLO9iJoDit is een klein project heb ik voor een collega die een 1/48 RC schaalmodel van een Fletcherklasse torpedobootjager bouwt (yup... dat maakt het "model" ongeveer 8 voet lang!) Hij vroeg als ik de 5 anime
Panorama's zonder een groothoek lens

Panorama's zonder een groothoek lens

heb je ooit wilde nemen foto's van een enorme landschap? Dit zijn de panorama's (in het geval je niet weet).Er zijn twee manieren mensen normaal mee:1. met een groothoek lens2. zonder een groothoek lensDus weet ik wat je denkt. Je denkt dat ik gewoon
HyperDuino gebaseerde CubeSat

HyperDuino gebaseerde CubeSat

Mijn interesse in de verkenning van de ruimte begonnen in oktober 1957 met de lancering van Sputnik. In 1961 heb ik een eerlijke project van de wetenschap op basis van het pakket van een instrument ontworpen, gebouwd en omhoog met een weerballon verz
Raspberry Pi Web gecontroleerde / autonome Robot

Raspberry Pi Web gecontroleerde / autonome Robot

Inleiding (bijgewerkt 26/12/15)Dit is ooit mijn eerste poging tot het bouwen van een web controlled robot met gebouwd in autonome modus. Het project begon als een Arduino Nano gebaseerd botsing vermijden robot gebouwd voor basisschool kinderen inspir
Hoe maak je een afstandsbediening bewuste web-marionet door hacking Twitter, Google, Skype, Arduino en Processing!

Hoe maak je een afstandsbediening bewuste web-marionet door hacking Twitter, Google, Skype, Arduino en Processing!

Hoe te manipuleren een fysiek object via het web alleen met behulp van gemeenschappelijke webdiensten en hun toegankelijke gegevens feeds, met een aantal toegevoegde open bron dingen te decoderen en manipuleren van gegevens, en uiteindelijk het gebru
Maak uw eigen animatie FlipBooKit

Maak uw eigen animatie FlipBooKit

De basic FlipBooKit komt met een nette animatie uit Eadward Muybridge de paard studies. Een aantal andere kunstenaars animaties zijn beschikbaar voor aankoop op de FlipBooKit website, maar ik ga u tonen hoe te maken van uw eigen aangepaste flip kaart
Maken van een Web-Comic: scannen, schoonmaak en publiceren van Lineart

Maken van een Web-Comic: scannen, schoonmaak en publiceren van Lineart

Goedemorgen, en Welkom bij de tweede van mijn "Maken een Webcomic" serie tutorials.Dit instructable behandelt een ander van de nuttige mechanica van webcomics productie: hoe te nemen van een schets op papier, en maken het tot een mooie afbeeldin