Mouse animazione evento in Delphi FireMonkey
-
25-10-2019 - |
Domanda
ho aggiunto un pulsante e ha aggiunto un BoxBlurEffect ad esso e impostare le seguenti attributi al 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
I ciclo set = vero, perché se è falsa non è animando si tratta solo improvvisamente andando a valore finale.
Così ho impostato a true. Ma ora è un loop (come il nome descritto) non solo animare una volta e l'arresto.
E inoltre voglio che animato da valore di arresto al valore iniziale quando lascio il mouse (una sola volta). Quando le mie foglie di topo o entra, la nuova animazione deve partire dal valore corrente non dal valore massimo o minimo.
Soluzione
trigger non sempre funziona come mi aspetto nessuno ...
Si può fare in questo modo:
procedure TForm2.Button1MouseEnter(Sender: TObject);
begin
BoxBlurEffect1.AnimateFloat('BlurAmount', 10, 1);
end;
procedure TForm2.Button1MouseLeave(Sender: TObject);
begin
BoxBlurEffect1.AnimateFloat('BlurAmount', 0, 1);
end;
Senza 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow