animation événement souris dans Delphi FireMonkey
-
25-10-2019 - |
Question
J'ai ajouté un bouton et a ajouté un BoxBlurEffect et à définir les attributs suivants au BoxBlurEffect1
.
//extracted form fmx file
object BoxBlurEffect1: TBoxBlurEffect
Trigger = 'IsMouseOver=true'
Enabled = False
BlurAmount = 0.009999999776482582
object FloatAnimation1: TFloatAnimation
AnimationType = atInOut
Enabled = True
Duration = 1.000000000000000000
Loop = True
Trigger = 'IsMouseOver=true'
TriggerInverse = 'IsMouseOver=false'
StartValue = 0.009999999776482582
StopValue = 10.000000000000000000
PropertyName = 'BlurAmount'
end
end
Je boucle ensemble = vrai parce que si elle est fausse, il ne l'anime va tout simplement tout à coup la valeur finale.
Alors, je l'ai mis à true. Mais maintenant, il est en boucle (comme le nom décrit) non seulement animant une fois l'arrêt.
Et aussi je veux Animer de la valeur d'arrêt à la valeur de départ quand je quitte la souris (une seule fois). Quand mes feuilles de souris ou pénètre, la nouvelle animation doit commencer à partir de la valeur actuelle pas de la valeur maximale ou minimale.
La solution
Trigger ne fonctionne pas toujours comme je l'attends ni ...
Vous pouvez le faire comme ceci:
procedure TForm2.Button1MouseEnter(Sender: TObject);
begin
BoxBlurEffect1.AnimateFloat('BlurAmount', 10, 1);
end;
procedure TForm2.Button1MouseLeave(Sender: TObject);
begin
BoxBlurEffect1.AnimateFloat('BlurAmount', 0, 1);
end;
Sans TFloatAnimation:
object Button1: TButton
Position.Point = '(264,192)'
Width = 80.000000000000000000
Height = 22.000000000000000000
OnMouseEnter = Button1MouseEnter
OnMouseLeave = Button1MouseLeave
TabOrder = 1
StaysPressed = False
IsPressed = False
Text = 'Button1'
object BoxBlurEffect1: TBoxBlurEffect
BlurAmount = 0.009999999776482582
end
end