Créer un effet de pluie dans Flash avec ActionScript 3.0

Dans ce didacticiel, nous allons créer un effet de pluie dynamique à l'aide d'ActionScript 3.0. L'effet peut être personnalisé de nombreuses façons en modifiant simplement quelques lignes de code. Commençons!


Aperçu du résultat final

Jetons un coup d'œil à l'effet final sur lequel nous allons travailler:

Étape 1 - Bref aperçu

Nous allons dessiner une simple goutte de pluie, puis utiliser nos compétences ActionScript pour dupliquer, déplacer et positionner le MovieClip afin d'obtenir un bel effet de pluie..

Étape 2 - Le document .fla

Créez un nouveau document ActionScript 3 (Fichier> Nouveau…). Réglez la taille de la scène à vos dimensions souhaitées, j'ai utilisé 600 x 300 px.

Étape 3 - Choisissez une image

Ajouter ou dessiner une image à utiliser comme arrière-plan, j'ai utilisé une image modifiée par JinThai, sous licence Creative Commons.

Étape 4 - Couches

Renommez le premier calque en "Arrière-plan" puis créez-en un autre et nommez-le "Code" (nous utiliserons celui-ci pour placer notre code ActionScript). Vous pouvez verrouiller la couche "Code" pour éviter de placer des dessins non désirés dans cette couche..

Étape 5 - Création de la chute

Créez un graphique à utiliser comme goutte de pluie. Définissez sa couleur en blanc et utilisez un dégradé linéaire pour l'alpha; le mien est compris entre 40 et 15. Convertissez-le en MovieClip et nommez-le "Déposer", n'oubliez pas de cocher la case "Exporter pour ActionScript"..

Étape 6 - Importation des classes requises

Commençons par du code dans un fichier ActionScript séparé:

package Classes / * Importer les classes requises * / import flash.display.MovieClip; import flash.events.Event;

Ici, nous importons les classes que nous allons utiliser. Rappelez-vous que le mot à côté de "package" est le nom du dossier où se trouve notre classe..

Étape 7 - Extension de la classe

// Nous devons étendre la classe pour pouvoir utiliser la méthode addChild (). Classe publique Rain s'étend MovieClip 

L'extension de la classe MovieClip permettra à notre classe d'hériter de toutes les méthodes, propriétés et fonctions du MovieClip. Dans ce cas, nous l'utilisons pour accéder à la méthode addChild ().

Étape 8 - Les variables

Nous utiliserons ici un "vecteur" exclusif de Flash Player 10 Class. En termes simples, la classe de vecteur fonctionne comme un tableau, mais est considérablement plus rapide.

Variable privée offset: int = 50; // C'est la zone de décalage en pixels que l'effet va prendre. Sans cela, les coins de la zone d'effet seront des variables privées sans pluie var dropsNumber: int; // Le nombre de gouttes de pluie; sa valeur est définie dans les paramètres private var dropsVector: Vector. = nouveau vecteur.(); // Le vecteur qui stockera chaque goutte de pluie

Étape 9 - Fonction principale

fonction publique init (drops: int, fallSpeed: int, windSpeed: int, hArea: int, vArea: int, dir: String): void dropsNumber = drops;

La fonction principale, avec certains paramètres, facilite l’adaptation de l’effet à vos besoins. Vous pouvez modifier le nombre de gouttes, la vitesse à laquelle les gouttes tombent, la vitesse à laquelle les gouttes se déplacent horizontalement, la taille de la zone d'effet et la direction de la pluie (gauche ou droite)..

Nous définissons la valeur dropsNumber ici.

Étape 10 - Gauche ou Droite?

Par défaut, l'offset var est configuré pour fonctionner avec le côté gauche. Nous devons donc vérifier où la pluie va tomber et modifier l'offset si la direction est correcte..

if (dir == "right") offset * = -1; 

Étape 11 - Utilisation du Drop MovieClip

Afin de montrer différentes occurrences du Drop MovieClip, nous devons créer un nouvel objet Drop dans une instruction "For":

pour (var i: int = 0; i < drops; i++)  var drop:Drop = new Drop(); drop.fallSpeed=fallSpeed; drop.windSpeed=windSpeed; drop.dir=dir; drop.hArea=hArea; drop.vArea=vArea;

Nous utilisons la variable "drops" pour obtenir le nombre de gouttes défini par l'utilisateur et définir les variables à l'intérieur du MovieClip pour une utilisation ultérieure..

Étape 12 - Position

Définir une position aléatoire initiale pour les gouttes.

drop.x = Math.random () * (hArea + offset); drop.y = Math.random () * vArea;

Étape 13 - Échelle

drop.scaleX = Math.round (((Math.random () * 0.8) + 0.3) * 10) / 10; drop.scaleY = drop.scaleX;

Cela définit l’échelle des gouttes entre 0,3 et la taille originale.

Étape 14 - Ajout des gouttes sur la scène

dropsVector.push (drop); addChild (déposer);  // Fin de For inTheDirection ();  // Fin de la fonction init

Ce code ajoute Drop MovieClip au vecteur puis à la scène. Il appelle aussi la fonction "direction".

Étape 15 - Direction

fonction privée inTheDirection (): void for (var i: int = 0; i < dropsNumber; i++)  switch (dropsVector[i].dir)  case "left" : dropsVector[i].addEventListener(Event.ENTER_FRAME, moveLeft); break; case "right" : dropsVector[i].scaleX*=-1; //Our Drop was created going to the left, so we flip it to make it look like it's going to the right dropsVector[i].addEventListener(Event.ENTER_FRAME, moveRight); break; default : trace("Error");   

Dans cette fonction, nous utilisons un autre "Pour" pour accéder aux MovieClips à l'intérieur du vecteur. Ensuite, nous vérifions le paramètre de direction et ajoutons un écouteur à la fonction correspondante. Tout cela va prendre en charge le mouvement et la position.

Étape 16 - Fonctions de déplacement

fonction privée moveLeft (e: Event): void e.target.x- = e.target.windSpeed; e.target.y + = Math.random () * e.target.fallSpeed; if (e.target.y> e.target.vArea + e.target.height) e.target.x = Math.random () * (e.target.hArea + (offset * 2)); e.target.y = - e.target.height;  fonction privée moveRight (e: Event): void e.target.x + = e.target.windSpeed; e.target.y + = Math.random () * e.target.fallSpeed; if (e.target.y> e.target.vArea + e.target.height) e.target.x = Math.random () * (e.target.hArea - offset * 2) + offset * 2; e.target.y = - e.target.height; 

Cela déplace les gouttes en fonction des paramètres de la fonction principale. Il réinitialise ensuite la position lorsque les gouttes se déplacent en dehors de la zone d'effet..

Étape 17 - Utilisation de la classe

C'est la classe terminée, pour l'utiliser, revenons à l'IDE Flash, ouvrons le panneau Actions et écrivons:

Import Classes.Rain; pluie var: pluie = nouvelle pluie (); rain.init (200, 50, 5, 600, 300, "à gauche"); addChild (pluie);

Cela va créer un nouvel objet de pluie, puis appeler la fonction principale pour lancer l’effet. Enfin, nous ajoutons l'effet à la scène.

Conclusion

N'oubliez pas que vous pouvez jouer avec les paramètres pour obtenir divers effets et que vous pouvez également modifier les largages en dessinant ce que vous voulez. Continuez d’essayer différentes combinaisons pour obtenir l’effet exact souhaité.

J'espère que vous avez aimé lire le tut autant que je l'ai écrit. Merci d'avoir lu!