Flocon made in Lyon

Hier encore j’attendais désespérement de voir les rues de Lyon se recouvrir d’un manteau blanc… :(
A défaut d’un manteau blanc , nous avons eu droit à un superbe ciel bleu et des températures négatives.

Bref, au lieu d’attendre le bon vouloir du ciel, j’ai decidé de vous faire part d’un script sans prétention que j’ai réalisé afin d’égayer nos animations Flash.

Voici le detail du script ;

il est divisé en 2 parties : – la classe Neige qui permet de générer des flocons – la classe Flocon qui gére le comportement des flocons

Classe Neige (Neige.as) :

  1. import Flocon.as;

  2. class Neige {

  3. private var _NnbFlocon:Number;

  4. private var _Ncible:Object;

  5. private var _NxMin:Number;

  6. private var _NxMax:Number;

  7. private var _NyMin:Number;

  8. private var _NyMax:Number;

  9. private var _Nspeed:Number;

  10. private var _Namp:Number;

  11. private var _life:Number;

  12. public function Neige(nb, cible, xmin, xmax, ymin, ymax, s, a, l) {

  13. _NnbFlocon = nb;

  14. _Ncible = cible;

  15. _NxMin = xmin;

  16. _NxMax = xmax;

  17. _NyMin = ymin;

  18. _NyMax = ymax;

  19. _Nspeed = s;

  20. _Namp = a;

  21. _life = l;

  22. }

  23. public function setNeige() {

  24. for (var i = 0; i<_nnbflocon ; i++) {

  25. var flocon = Ncible.attachMovie(“flocon”, “flocon”i, 10i, {xMin:_NxMin, xMax:NxMax, yMin:NyMin, yMax:NyMax, speed:Nspeed, amp:Namp, life:life});

  26. }

  27. }

  28. }

Classe Flocon (Flocon.as) :

  1. class Flocon extends MovieClip {

  2. //taille du flocon

  3. private var _taille:Number;

  4. // temps de vie du flocon en Millisecondes

  5. private var _life:Number;

  6. // Date de naissance du flocon

  7. private var _naissance;

  8. // vitesse de chute du flocon

  9. private var _speed:Number;

  10. // position de base du flocon

  11. private var _posx:Number;

  12. //amplitude de la chute

  13. private var _amp:Number;

  14. //limite max de la scene en X

  15. private var _xMin:Number;

  16. // limite max de la scene en Y

  17. private var _yMin:Number;

  18. //limite max de la scene en X

  19. private var _xMax:Number;

  20. // limite max de la scene en Y

  21. private var _yMax:Number;

  22. public function Flocon() {

  23. _amp = Math.abs(_amp);

  24. _life = Math.abs(_life);

  25. initFlocon();

  26. moveFlocon();

  27. }

  28. private function initFlocon() {

  29. _x = Math.random()*(_xMax-_xMin);

  30. trace(_x);

  31. _y = _yMin-100;

  32. _speed = 1+Math.random()*Math.abs(_speed);

  33. _xscale = _yscale=_taille=10+Math.random()*90;

  34. _alpha = 100-_taille;

  35. _naissance = getTimer();

  36. }

  37. public function moveFlocon() {

  38. this.onEnterFrame = function() {

  39. _y += _speed;

  40. _rotation = _y;

  41. _x = _x+(Math.cos((_y_speed)Math.PI/180)*_amp);

  42.  

  43. if ((_x>_xMax+this._width) || (_x<_xmin -_width) || (_y>_yMax+_height) || (_alpha< =0)) {

  44. initFlocon();

  45. }

  46. if (_life>0) {

  47. if (_life< (getTimer()-_naissance)) {

  48. killFlocon();

  49. }

  50. }

  51. };

  52. }

  53. private function killFlocon() {

  54. _alpha -= _life/1000;

  55. }

  56. }

Intégration dans l’animation de 400×300 :
-> création d’un Movieclip que l’on nommera “Flocon ” et le lier à la classe Flocon.as

  1. import Neige;

  2. maNeige = new Neige(100,_root,0, 550, 0, 200, 1, 1, 0);

  3. maNeige.setNeige();

Et voilà vous obtenez cette animation

Toutefois , mon script ne semble pas optimiser car si je place 80 flocons sur la scène , l’animation est de plus en plus lente… :|

P.S. : j’ai corrigé le problème de lenteur, le script est parfaitement fonctionnel

N’hesitez pas à me faire part de vos commentaires et de vos critiques concernant l’optimisation de cette animation :) <—_nnbflocon—><—_nnbflocon—><—_nnbflocon—>

Si vous avez apprécié cet article, s'il vous plait, prenez le temps de laisser un commentaire ou de souscrire au flux afin de recevoir les futurs articles directement dans votre lecteur de flux.

Commentaires

sympa cette animation, jregarderai un peu mieux le code plus tard, en tout cas merci, ca peut servir.

et pis tu aurais du regarder un peu mieux le ciel car ce soir il a neigé un petit peu ;)

Sont jolies tes flocons ;)
Sur dotclear tu as un plugin pour la coloration syntaxique du code ;) Essaye de le trouver pour word press

Sympa l’animation ! Je sens que je vais me plaire ici.

Laisser un commentaire

(requis)

(requis)