2011-10-18 98 views
2

我添加了一個按鈕,併爲其添加了一個BoxBlurEffect併爲BoxBlurEffect1設置了以下屬性。Delphi Firemonkey中的鼠標事件動畫

//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 

我設置循環=正確的,因爲如果是假的則沒有動畫它只是突然將要結束的值。

所以我把它設置爲true。但現在它正在循環(正如名稱所描述的那樣),而不僅僅是一次動畫並停止。

而且我希望它從停止值開始動畫,以便當我離開鼠標時開始創建值(僅一次)。當我的鼠標離開或進入時,新動畫必須從當前值開始,而不是從最大值或最小值開始。

+1

是什麼原因 - 1 – VibeeshanRC

回答

6

觸發並不總是如我所料既不...

你可以這樣說:

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 
+0

它是一個觸發器的錯誤,或者我不知道如何正確使用它 – VibeeshanRC

+1

謝謝你的工作;但我認爲firemonkey將足夠聰明,可以在沒有一行代碼的情況下開發動畫;所以我們可以有獨立的GUI設計師 – VibeeshanRC

+2

不確定...但我認爲觸發器被檢查/轉發的動畫/效果只有一個子級別...所以,效果的父檢測鼠標..轉發給效果和效果忘了轉發給它的孩子......(但正如我所說......不知道......只是我的猜測......) – Whiler