第二十二章:動畫(四)

相對動畫
後續點擊問題的一個解決方案是使用RelRotateTo(“relative rotate to”),它獲取動畫開始的當前Rotation屬性,然後將其參數添加到動畫結束的該值。 這是一個例子:

void OnButtonClicked(object sender, EventArgs args)
{
    button.RelRotateTo(90, 1000);
}

每次點擊都會啓動一個動畫,在一秒鐘內將按鈕旋轉90度。 如果您在動畫正在進行時碰巧按下按鈕,則會從該位置開始播放新動畫,因此它可能會在不是90度增量的位置結束。 多次點擊時速度沒有變化,因爲動畫總是以每秒90度的速度運行。
RotateTo和RelRotateTo都有一個共同的底層結構。 在動畫過程中,計算一個值 - 通常稱爲t(表示時間),有時稱爲進度。 此值基於已用時間和動畫的持續時間:

𝑡 = 𝑒𝑙𝑎𝑝𝑠𝑒𝑑𝑇𝑖𝑚𝑒 / 𝑑𝑢𝑟𝑎𝑡𝑖𝑜

t的值的範圍從動畫開始時的0到動畫結束時的1。 動畫也由兩個值(通常是屬性的值)定義,一個用於動畫的開始,一個用於結束。 這些通常稱爲起始值和結束值,或者來自和來自值。 動畫根據簡單的插值公式計算from和to之間的值:

𝑣𝑎𝑙𝑢𝑒 = 𝑓𝑟𝑜𝑚𝑉𝑎𝑙𝑢𝑒 + 𝑡 ∙ (𝑡𝑜𝑉𝑎𝑙𝑢𝑒 − 𝑓𝑟𝑜𝑚𝑉𝑎𝑙𝑢𝑒)

當t等於0時,value等於fromValue,當t等於1時,value等於toValue。
RotateTo和RelRotateTo都在調用方法時從Rotation prop erty的當前值獲取fromValue。 RotateTo將toValue設置爲等於其參數,而RelRotateTo將toValue設置爲等於fromValue及其參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章