線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1610
推到 Plurk!
推到 Facebook!

Firemonkey動畫問題。

答題得分者是:P.D.
stacker_liew
中階會員


發表:59
回覆:168
積分:65
註冊:2004-05-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2016-02-26 13:24:06 IP:1.9.xxx.xxx 訂閱
我現在有個Layout,想要讓此Layout在Visible := True時由下往上顯示出來,在Visible := False時則由上往下收回。前者我可以做得到,可是後者無論如何試都試不出來。
請問應該要怎麼做才有這樣的效果?

我目前是在此Layout做了兩個TFloatAnimation,可是不懂參數應該什麼才能做到上面的效果。

請教一下了。
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2016-02-27 10:05:34 IP:61.224.xxx.xxx 未訂閱
如果你已實作由下往上的動畫的話, 那由上往下只是把Animation Y 軸倒過來設定
start y=0, end=nn 就可以了, 你可以利用原來的 Anination 重新指定 Y 軸的 start, end 就好了, 或者另開啟一組 TFloatAnimation 分開在 Visibile True, Flase 時呼叫亦可,
但我想你 True 可以, False 不行, 可能在 第一次 FloatAnimation 結束後, 你沒有把 FloatAnimation.enabled 改為 False所造成, 查查看這個部份是否漏掉關閉動畫, 導致下次無法使用
===================引 用 stacker_liew 文 章===================
我現在有個Layout,想要讓此Layout在Visible := True時由下往上顯示出來,在Visible := False時則由上往下收回。前者我可以做得到,可是後者無論如何試都試不出來。,
請問應該要怎麼做才有這樣的效果?

我目前是在此Layout做了兩個TFloatAnimation,可是不懂參數應該什麼才能做到上面的效果。

請教一下了。
stacker_liew
中階會員


發表:59
回覆:168
積分:65
註冊:2004-05-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2016-02-27 11:43:14 IP:1.9.xxx.xxx 訂閱
好的,我再試試看。
stacker_liew
中階會員


發表:59
回覆:168
積分:65
註冊:2004-05-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2016-02-27 17:33:13 IP:1.9.xxx.xxx 訂閱
試了,還是一樣不行,麻煩可以幫我看看那裡出錯了嗎?在這裡下載
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2016-02-27 21:09:44 IP:118.169.xxx.xxx 未訂閱
我先幫你看了這支, animation 的設定沒有問題, 但
1. onFinish 並沒有指定 animation stop 的動作 (這不是引發重點)
2. 你最主要的問題就在 tswitch, 因為你觸發 switch True 關閉 layout, 當然連動畫都還來不及顯示就被 visible flase 掉, 怎麼會有動畫?
最好的實證, 我在你的程式上弄了兩個button, 一個做 animation show, 一個做 animation hide (這是你自建的兩組),
分別按 button1, button2 都會效果, 足以說明是你的 layout 被立即 visible false 原因
3. animation 是一個進行式, layout 關閉是個未來式, 因此你必須在進行式完成後才能關閉 layout, 這樣說你應該懂, 所以 visible false 應該寫在 animation hide 的 onfinish 上
stacker_liew
中階會員


發表:59
回覆:168
積分:65
註冊:2004-05-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2016-02-28 00:09:20 IP:1.9.xxx.xxx 訂閱
那問題是把Visible := False寫在Animation的OnFinish上,那要什麼情況下才會觸發這個Animation呢?
===================引 用 P.D. 文 章===================
我先幫你看了這支, animation 的設定沒有問題, 但
1. onFinish 並沒有指定 animation stop 的動作 (這不是引發重點)
2. 你最主要的問題就在 tswitch, 因為你觸發 switch True 關閉 layout, 當然連動畫都還來不及顯示就被 visible flase 掉, 怎麼會有動畫?
最好的實證, 我在你的程式上弄了兩個button, 一個做 animation show, 一個做 animation hide (這是你自建的兩組),
分別按 button1, button2 都會效果, 足以說明是你的 layout 被立即 visible false 原因
3. animation 是一個進行式, layout 關閉是個未來式, 因此你必須在進行式完成後才能關閉 layout, 這樣說你應該懂, 所以 visible false 應該寫在 animation hide 的 onfinish 上
stacker_liew
中階會員


發表:59
回覆:168
積分:65
註冊:2004-05-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2016-02-28 01:31:33 IP:1.9.xxx.xxx 訂閱
這個弄好了。若要觸發此動畫,用FloatAnimation.Start就行了。
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2016-02-28 14:14:17 IP:118.169.xxx.xxx 未訂閱
雖然你使用start來觸發一樣可達到效果, 但果是這樣, 那embd又何苦設計兩個事件, start & stop 呢?
我前面提過, animation是一個進行式, 下達 start 後開始進行動畫效果, 那何時結束, 應該不需要我再說明吧!
當 animation 結束那一刻才進行後續要處理的事, 既是進行中, 當然是希望把動畫走完才接續下一個行為, 你處理的結果因為過程很短,
所以看到的結果好像一樣, 要不然你把 during time 設定到3分鐘看這個動畫, 就不難明白我說的!
===================引 用 stacker_liew 文 章===================
這個弄好了。若要觸發此動畫,用FloatAnimation.Start就行了。
stacker_liew
中階會員


發表:59
回覆:168
積分:65
註冊:2004-05-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2016-02-28 23:53:55 IP:1.9.xxx.xxx 訂閱
FloatAnimation裡有個參數叫Invert,也有個參數叫Trigger及TriggerInvert,也許可以達到此效果,但就是不懂要怎樣才能實作出來。
系統時間:2024-03-29 21:47:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!