Je viens de simplifier le code de AnimationExample.zip pour utiliser seulement l'effet du bouton #5 mais je n'arrive pas à arrêter l'effet à mi-chemin. J'essaie juste de faire disparaitre progressivement un bouton en cliquant dessus. Mon problème est que le bouton diminue au point de disparaitre mais revient toujours à sa grandeur initial à cause de "REPEAT_REVERSE", je ne trouve pas comment placer un "Stop" pour éviter la renverse.
B4X:
'Activity module
Sub Process_Globals
End Sub
Sub Globals
Dim Bouton1 As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim Animation1 As Animation
Activity.LoadLayout("1")
Animation1.InitializeScaleCenter("", 1, 1, 0, 0, Bouton1)
Bouton1.Tag = Animation1
Animation1.Duration = 1000
Animation1.RepeatCount = 0
Animation1.RepeatMode = Animation1.REPEAT_REVERSE
End Sub
Sub Button_Click
Dim b As Button
b = Sender
'Safety check. Not really required in this case.
If Not(b.Tag Is Animation) Then Return
Dim a As Animation
a = b.Tag
a.Start(b)
End Sub
Il faut savoir que cette bibliothèque revient toujours à l'image de départ à la fin de l'animation. C'est exaspérant et incompréhensible, mais bon... Il n'y a pas 36000 solutions: soit tu rends l'image invisible à la fin de l'animation si elle est censée disparaître, soit tu la remplaces par son aspect final.
Du moment que RepeatCount est à 0, RepeatReverse n'a aucune incidence.
Je n'ai pas encore exploré d'autres voies. Il y a d'un côté les animations purement graphiques (bibliothèque OpenGL et cie) et de l'autre les animations de vues. Dans ce dernier cas, la bibliothèque TweenEngine me paraît top mais je ne l'ai vue qu'en démo pour l'instant. Je n'ai rien fait avec.
les animations de vues. Dans ce dernier cas, la bibliothèque TweenEngine me paraît top mais je ne l'ai vue qu'en démo pour l'instant. Je n'ai rien fait avec.
Vraiment très bien! Le mouvement est très fluide, même sur l'émulateur. Je vais l'étudier mais je me demande si je pourrais pas juste m'écrire une procédure toute simple.
En réalité je veux juste faire disparaitre un objet (bouton, panneau ou image) par une diminution progressive de sa dimension. Ça donnerait comme une image qui se fermerait un peu comme une ancienne TV en cliquant sur le bouton "Fermer" en dessous.
En réalité je veux juste faire disparaitre un objet (bouton, panneau ou image) par une diminution progressive de sa dimension. Ça donnerait comme une image qui se fermerait un peu comme une ancienne TV en cliquant sur le bouton "Fermer" en dessous.
Je pense que la bibliothèque Animation devrait suffire (effet ScaleCenter). Dans le gestionnaire de l'événement AnimationEnd, supprime la vue ou rend-la invisible.
C'est justement ça mon problème, j'arrive pas à déclencher l'événement AnimationEnd.
B4X:
'Activity module
Sub Process_Globals
End Sub
Sub Globals
Dim Bouton1 As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim Animation1 As Animation
Activity.LoadLayout("1")
Animation1.InitializeScaleCenter("", 1, 1, 0, 0, Bouton1)
Bouton1.Tag = Animation1
Animation1.Duration = 1000
Animation1.RepeatCount = 0
End Sub
Sub Button_Click
Dim b As Button
b = Sender
'Safety check. Not really required in this case.
If Not(b.Tag Is Animation) Then Return
Dim a As Animation
a = b.Tag
a.Start(b)
End Sub
Sub Animation_AnimationEnd
Activity.Finish
End Sub
Tu as appelé ton gestionnaire d'événement Animation_AnimationEnd, il faut donc que tu initialises ton animation avec ce nom (enfin, la première partie du nom).
Si tu l'avais appelé Toto_AnimationEnd, il aurait fallu faire cette initialisation:
Animation1.InitializeScaleCenter("Toto", 1, 1, 0, 0, Bouton1)