Mausereignisanimation in Delphi Fironemonkey
-
25-10-2019 - |
Frage
Ich habe eine Schaltfläche hinzugefügt und einen BoxBlureFect hinzugefügt und die folgenden Attribute in die gesetzt 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
Ich habe Loop = true festgelegt, denn wenn es falsch ist, wird es nicht plötzlich zum Ende des Werts wird.
Also habe ich es wahr gesetzt. Aber jetzt ist es Looping (wie der Name beschrieben) nicht nur einmal animiert und anhält.
Und ich möchte auch, dass es vom Stoppwert animiert wird, um den Wert zu starten, wenn ich die Maus verlasse (nur einmal). Wenn meine Maus verlässt oder eintritt, muss die neue Animation vom aktuellen Wert nicht vom maximalen oder min -Wert beginnen.
Lösung
Trigger funktioniert nicht immer, wie ich es auch nicht erwarte ...
Sie können es so machen:
procedure TForm2.Button1MouseEnter(Sender: TObject);
begin
BoxBlurEffect1.AnimateFloat('BlurAmount', 10, 1);
end;
procedure TForm2.Button1MouseLeave(Sender: TObject);
begin
BoxBlurEffect1.AnimateFloat('BlurAmount', 0, 1);
end;
Ohne 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