Анимация событий мыши в Delphi FiremonKey
-
25-10-2019 - |
Вопрос
Я добавил кнопку и добавил в нее BoxblureFact и установил следующие атрибуты в 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
Я установил Loop = true, потому что, если он ложный, он не анимирует, он просто внезапно собирается конечное значение.
Поэтому я установил это на True. Но теперь это зацикливается (как описано имя), а не просто анимирует один раз и останавливается.
А также я хочу, чтобы это анимировалось от остановки, чтобы начать ценность, когда я покидаю мышь (только один раз). Когда моя мышь уходит или входит, новая анимация должна начинаться с текущего значения, а не с максимального или минимального значения.
Решение
Триггер не всегда работает, так как я не ожидаю ...
Вы можете сделать это так:
procedure TForm2.Button1MouseEnter(Sender: TObject);
begin
BoxBlurEffect1.AnimateFloat('BlurAmount', 10, 1);
end;
procedure TForm2.Button1MouseLeave(Sender: TObject);
begin
BoxBlurEffect1.AnimateFloat('BlurAmount', 0, 1);
end;
Без 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
Не связан с StackOverflow