Comment coder un effet de neige ?
bonjour,
C'est bientôt noël et je voudrai coder un effet de neige :D
En faite, la où je bloque, c'est sur le déplacement non linéaire d'objet (point ou bitmap par exemple)
Voilà un test simple avec 3 flocons : (image1, image2, image3 sont mes flocons)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
procedure TForm1.Timer1Timer(Sender: TObject); // ici 33 ms, la vitesse à laquelle les flocons descendent...
begin
image1.Top := image1.Top +1;
image2.Top := image2.Top +1;
image3.Top := image3.Top +1;
//ça c'est pour les replacer une fois descendu, enfin c'est pas trop le sujet :P
if image1.top = 200 then
begin
image1.top := 1;
image1.left := (random(200));
end;
if image2.top = 200 then
begin
image2.top := 1;
image2.left := (random(200));
end;
if image3.top = 200 then
begin
image3.top := 1;
image3.left := (random(200));
end;
end; |
Ce que je voudrai améliorer, c'est que mes flocon ne tombent pas verticalement,
mais un peu en biais, comme si il y avait du vent :D
Et je bloque dessus.... avez vous des idées, aglo différents, suggestion...?
Maintenant si mon effet comporte 200 flocons, je me suis dis qu'il serai bien de changer de méthode :
Code:
1 2 3 4 5 6 7 8
|
//cette fois j'ai 1 image de flocon en resource, que je vais réutiliser 200 fois =)
flocon := TBitMap.Create; // créer une variable flocon de type image
flocon.LoadFromResourceName(HInstance,'FLOCON');
procedure TForm1.Timer1Timer(Sender: TObject); // toute les 100 ms 1 flocon est dessiné
begin
Canvas.Draw(random(300)+1,random(20)+1,flocon); |
Voilà ca marche, mes flocons sont créés toute les 100 ms entre X = 300 et Y = 20...
Maintenant comment faire pour faire bouger tout ce beau monde?
juste qu'ils descendent verticalement pour commencer, j'arrive pas à les faire bouger :cry:
Merci d'avance.
inspiration :
effet neige :
http://sidchip.ath.cx/~maktone/installers/CLS-2001_12_11.zip
effet delpacement non linéaire :
http://sidchip.ath.cx/~maktone/installers/CLS-2001_08_28.zip