Label qui rebondit

Description

Utilisation des propriétés Left et Top d'un Label pour le faire rebondir en utilisant une fonction sinus et un timer.

Mettez une Form de petite taille et Timer.

Mettez aussi ça dans un module:

'déclaration de variables globales
Global ang As Integer 'l'angle qui variera entre 90 et 270
Global x%, inCCount%, rndCount% 'respectivement, position en X (left), pas d'incrémentation en x (+2 ou -2), et une variable pour l'amplitude du rebond

Vous pouvez télécharger le petit fichier zip.

Source / Exemple :


Private Sub Form_Load()
'au chargement, on initialise
ang = 90 'l'angle commence à 90
x% = 0 'position X (left) à 0 (tout à gauche
inCCount% = 20 'pas d'incrémentation x
rndCount% = 200 + 640 * Rnd 'rebond (aléatoire)
End Sub

Private Sub Timer1_Timer()
ang = ang + 4 'on augmente l'angle à chaque itération du timer
If ang = 270 Then 'quand on a fait un demi-tour, on réinitialise
  ang = 90
  rndCount% = 200 + 640 * Rnd
End If
'ici, on transforme l'angle en radian et on calcule son sinus
'Celui-ci variera entre 0 et -1. On le multiplie par rncCount
'(qui contient une valeur entre 200 et 840) et ça rebondit (!)
y% = 840 + rndCount% * Cos(ang * 3.1415 / 180)
'on définit les propriétés left et top (x et y) pour le label
Label1.Top = y%
Label1.Left = x%
'on incrémente x
x% = x% + inCCount%
'si besoin, on change le pas d'incrémentation pour x
If x% = 1320 Then inCCount% = -20
If x% = 0 Then inCCount% = 20

'décommenter ces lignes pour avoir un effet de couleur
'pas très beau mais qui peut être intéressant techniquement
'xc% = x% / 1320 * 14 + 1
'yc% = y% / 840 * 14 + 1
'v$ = Hex$(xc%) + Hex$(xc%) + Hex$(yc%) + Hex$(yc%)
'Label1.ForeColor = Val("&h" & v$ & "00")
End Sub

Conclusion :


C'est mon premier source déposé ! Je me suis posé pas mal de question sur le "niveau" ainsi que la "catégorie".

J'espère vous en fournir d'autres et qu'ils vous satisferont !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.