TUTORIALS / Effecten
Vuurwerk
262 downloads,
33596 keer gelezen
(December 23, 2006)
| Waardering: | 1 keer gestemd |
|
2 van de 5 |
Eigenschappen
|
|||||
| Formaat: | 17 KB | ||||
Vuurwerk
| tutorial | voorbeeld | download |
Intro
Dit is een turorial waar je leert hoe je een soort vuurwerk maakt.
Het is wel zeer basisch en er is veel verbeelding voor nodig, maar toch. Druk op download als je het gewoon wil downloaden of druk op voorbeeld om het afgewerkt product te zien.
- Open je flash Document.
- Stel de grootte in en alle andere eigenschappen. Ik heb gekozen voor 550 - 500, zwarte achtergrond
en 12 fps. - Nu moeten we enkel nog de Acties neerschrijven.
- We schrijven eerst deze lijntjes.
-
Eerst hebben we de variabele
depth
die straks zal gebruikt worden.
Dan zie je de functiethis.onMouseDown
. Dit is een functie die elke keer de muis wordt ingedrukt zal gestart worden.
In die functie zit de functiesetVuurwerk(x, y)
met daarin de x en y waarde van de muis. - Dan beginnen we aan de functie
function rand()
aangezien dit een zeer makkelijke , maar wel veelvuldig gebruikte functie is. - We gebruiken deze functie om een random getal te kiezen tussen een minimum en maximum waarde.
-
Zoals je ziet kiezen we random getal met de functie
Math.random()
. Deze kiest een getal tussen 0 en 1.
Dit getal vermenigvuldigen we dan met het verschil van max en min. En daarna doen we dit getal + min waarde en ronden we het getal af.voorbeeld:
Max = 20, Min= 4
Math.random() = 0.1454778
0.1454778 * (20 - 4) = 0.1454778 * 16 = 2.328
2.328 + 4 = 6.328
Math.round(6.328) = 6
En we krijgen een getal tussen 4 en 20 -
Dan beginnen we aan de hoofdfunctie.
- function setVuurwerk(x, y) {
- var mc:MovieClip = _root.createEmptyMovieClip("vuurwerk" + depth, depth);
- //
- mc.color = rand(0, 256) << 16 | rand(0, 256) << 8 | rand(0, 256);
- mc.dikte = rand(3, 5);
- //
- mc.lineStyle(mc.dikte, mc.color, 100);
- mc.lineTo(1, 0);
- //
- mc._x = x;
- mc._y = Stage.height + mc._height;
- //
- mc.y = y;
- mc.speed = 3;
- //
- mc.onEnterFrame = function() {
- var distance = (mc._y - y);
- //
- mc._y -= (distance / this.speed);
- if (distance < 2) {
- this.clear();
- //
- var num = rand(80, 110);
- //
- var different = (rand(0, 5) == 0) ? true : false;
- //
- for (var i:Number = 0; i < num; i++) {
- var m:MovieClip = _root.createEmptyMovieClip("vuurwerkbol" + depth, depth + 1);
- //
- if (!different) {
- m.lineStyle(this.dikte, this.color, 100);
- } else {
- m.lineStyle(this.dikte, rand(0, 256) << 16 | rand(0, 256) << 8 | rand(0, 256), 100);
- }
- m.lineTo(1, 0);
- //
- var radius = rand(0, 360);
- var cos = Math.cos(radius);
- var sin = Math.sin(radius);
- //
- m.x = (200 * cos) + this._x;
- m.y = (200 * sin) + this._y;
- //
- m._x = this._x;
- m._y = this._y;
- //
- m.speed = rand(5, 15);
- //
- m.onEnterFrame = function() {
- var xdist = this.x - this._x;
- var ydist = this.y - this._y;
- //
- this._x += xdist / this.speed;
- this._y += ydist / this.speed;
- //
- this._alpha -= 3;
- //
- if (this._alpha <= 0) {
- this.removeMovieClip();
- }
- };
- //
- depth++;
- }
- this.removeMovieClip();
- }
- };
- //
- depth++;
- }
-
Ik zal nu regel per regel proberen uit te leggen.
r 2:
We maken een nieuwe Movieclip aan en noemen hem vuurwerk, we geven hem de diepte :depth
. Dit is een variabelen dat we in het begin hebben vastgelegd.r 4:
We kiezen nu een random kleur. We doen dit door drie maal een random getal tussen 0 en 256 te kiezen met onze functierand()
.
De eerste waarde is die van de kleur rood, de tweede van groen en de derde van blauw. Dit is een speciaal soort getal.r 5:
We kiezen de dikte, een getal tussen 3 en 5.r 7 - 8:
We teken nu een bolletje. Dit doen we met de lineTo functie. Deze tekent een lijn van één pixel groot.
Maar de lijn daarvoor hebben we de lineStyle vastgelegd.We hebben de lijn een eigen kleur en dikte meegegeven. Omdat de lijn vrij dik is lijkt die precies op een bolletje.r 10 - 11:
We leggen de x en y vast van het bolletje. De x is gelijk aan de waarde meegegeven via de functie en de y is juist onder de Stage zodat hij nu nog onzichtbaar is.r 13:
Nu leggen we de y vast waar het bolletje naar toe moet bewegen. Deze waarde is ook meegegeven via de functie.r 14:
Hier leggen we de snelheid van het bolletje vast.r 16:
Start van de onEnterFrame. Alles wat in deze functie staat wordt elke frame herhaald.r 17:
De afstand tussen de huidige y-waarde en de target y - waarde. De totale afstand dat dus nog moet worden afgelegd.r 19:
We doen dan de huidige y-waarde - (de afstand / de snelheid).(distance / this.speed)
>> Hoe groter de afstand hoe groter de snelheid zal zijn, hoe dichter hoe trager.r 21:
Als de afstand tot ons doel kleiner is als 2 dan kunnen we beginnen aan de volgende stap.r 22:
Het huidige bolletje wordt gewist.r 24:
Er wordt een random nummer gekozen tussen 80 en 110. Dit is het aantal bolletjes dat gaan ontstaan.r 26:
Dit is eenboolean
dattrue
wordt als de random waarde = 0. Als deze waardetrue
is dan zullen alle verschillende bolletjes een andere kleur hebben. Anders zullen ze dezelfde kleur
hebben als het "hoofdbolletje".Een boolean is een variabele dat slechts twee waarden kan hebben >> true en false
r 28:
For loop.r 29:
Een nieuwe movieclip voor een nieuw bolletje.r 31 - 36:
Als de variabeledifferent
false is dan wordt de kleur gebruikt van het hoofdbolletje anders wordt er een random kleur gebruikt. Dan wordt het bolletje getekend.r 38 - 40:
Eerst wordt er een random waarde gekozen tussen 0 en 360. Dit is dan zogezegd de hoek aangezien we willen dat dat ene bolletjeontploft
in meerdere verschillende bolletjes die er allemaal rond vliegen.
Van die hoek pakken we dan cosinus en de sinus.r 42 - 43:
Nu leggen we de variabele x vast>> we vermenigvuldigen 200 ( = max straal van onze cirkel) met de cos en doen dit + de x-waarde van ons hoofdbolletje.
Hetzelfde voor de variabele y. Deze 2 waarden zijn de target x en y van het bolletje. De x en y waar het bolletje moet geraken.
Om dit een beetje veel duidelijker te maken >> een voorbeeld:
radius = rand(0,360) = 140
cos = Math.cos(140) = -0.197813574004268
sin = Math.sin(140) = 0.980239659440312
x = (200 * -0.19781) + this._x = (200 * -0.19781) + 275 = -39.562 + 275 = 235.4
y = (200 * 0.98024) + this._y = (200 * 0.98024) + 250 = 196.048 + 250 = 396.0
r 48:
De random snelheid van het bolletje. Als je deze snelheid constant zet dan krijg je een cirkel.r 50:
functie die voor elk bolletje elke frame wordt herhaald.r 51 - 52:
De afstand tot de x-waarde en de afstand tot de y-waarder 54 - 55:
Hetzelfde principe als daarnet. De x en y wordt vermeerderd met de afstand gedeeld door de snelheid.r 57:
De alpha wordt verminderd met drie.r 59 - 61:
Als de alpha < 0 dan wordt dit bolletje verwijderd.r 64:
Depth wordt vermeerderd met één.r 66:
Het hoofdbolletje wordt verwijderd.r 70:
Depth wordt vermeerderd met één.
var depth:Number = 0;
this.onMouseDown = function() {
setVuurwerk(_xmouse, _ymouse);
};
function rand(min:Number, max:Number) {
return Math.round((Math.random() * (max - min)) + min);
}
<< Klik hier om de functie te kunnen kopieren zonder nummers >>
Dit was de tutorial. Heb je nog vragen stuur mij dan zeker een e-mail of plaats een opmerking.
Wil je mijn afgewerkt product zien druk dan op
voorbeeldof download mijn .Fla.
Bedankt voor het volgen van mijn tutorial
Actie
Cy Warez
(24 October 2009, 13:35)
Waar kan je de acties invoeren?
Reactie
stefan govaard
(31 December 2008, 11:10)
1-2
Kun je er geen geluid bij maken als het ontploft?



