共用方式為


慣性機制

慣性可用來執行以動畫顯示物件移動的計算,並啟用在包含 Windows Touch 之應用程式中的一般可用性支援。 本節說明慣性所啟用的下列功能。

  • 慣性物理的簡短概觀。
  • 使用速度與減速屬性的 Smooth 物件動畫。
  • 使用位移屬性的 Smooth 物件動畫。
  • 使用彈性界限從螢幕邊緣跳動。

慣性物理概觀

慣性處理器使用簡單的物理模型,其中包含位置、減速值和初始速度。 時間是用來做為模型的動態輸入,以判斷物件目前的位置。 下圖和公式概述用於計算物件位置的物理模型。

圖例顯示用於計算物件位置的圖形和公式

在用來計算目前位置 (x) 的公式中,v) 的初始 (速度會乘以經過的時間 (t) ,並透過減去因數 (d) 時間平方來減少。 這會導致平滑物件減速。 在前一個圖例中,在曲線的初始 (最左邊) 部分,物件會快速移動,因為其目前速度是初始速度。 在曲線的最右邊 (最右邊) 部分時,物件已完全停止,因為其速度是 0。 x 速度、y 速度及旋轉速度的物件速度計算,全都會使用此公式進行計算。

慣性處理器所使用的所有距離都是相對的。 如果您想要使用螢幕座標,請將螢幕座標傳遞至操作 (或慣性) 處理器;如果您想要使用絕對座標,請將那些座標傳遞至您使用的處理器。 不論您使用的值為何,操作處理器都會使用毫秒時鐘刻度來處理時間。 這些值可以使用 ProcessTime 方法直接傳遞至慣性處理器,或透過呼叫 Process來使用預設時間戳記。

使用速度與減速屬性的 Smooth 物件動畫

您可以藉由在慣性處理器介面中設定速度與減速值,然後呼叫 Process,直接與物理模型互動,以啟用平滑動畫。 呼叫 Process 會觸發物件操作,進而造成 UI 更新。 傳遞至慣性處理器的物件速度值通常會在完成時取自操作處理器。 您的遞減值將取決於您想要讓物件產生動畫的時間長度,以及您用於計算的單位。 由於這些值相依,因此有時候您必須從管理處理器調整輸入速度,並使用任意值進行減速。 在將 TOUCHINPUT 結構的 x 和 y 屬性傳遞至操作處理器之 x 和 y 屬性的各種案例中,下列值很常見。

案例 屬性 Set 遞減值 一般速度輸入調整 備註
翻譯 DesiredDeceleration 0.003f 無。 使用此值會在使用觸控輸入時產生較長的距離動畫。
翻譯 DesiredDeceleration 0.001f 觸控輸入的第 1/20 個初始速度,無滑鼠輸入 使用此值會以動畫顯示大約一秒的一般速度輸入。
翻譯 DesiredDeceleration 0.5f 使用此值可讓您自然地在大型 Windows Touch 顯示器上動畫。
旋轉 DesiredAngularDeceleration 0.000015f 轉換成度的弧度。 使用此值會在使用觸控輸入時產生較長的旋轉動畫。
旋轉 DesiredAngularDeceleration 0.00001f 觸控輸入的第 1/40 個旋轉差異,無滑鼠輸入 此值以弧度為單位,因此您必須使用非常小的減速和速度值。
旋轉 DesiredAngularDeceleration 0.000005f 這個值在大型 Windows Touch 顯示器上具有自然的風格。

 

使用所需位移屬性的 Smooth 物件動畫

在某些情況下,您不想要使用使用者的輸入進行物件移轉,但仍希望物件在畫面上順暢地產生動畫效果。 在此情況下,您可以使用慣性處理器中的位移屬性,讓處理器計算在畫面上移動物件的初始速度。

使用彈性界限控制物件位置

當您有物件在畫面上移動之後,您通常會想要在使用者的觀點之外停止它。 慣性處理器可透過界限和彈性邊界屬性來啟用這項功能。 下圖說明一般應用程式中的各種界限和邊界屬性。

顯示界限和彈性邊界屬性的螢幕擷取畫面

您可以設定應用程式的左、上、右和下邊界和彈性邊界,而慣性處理器會處理將 UI 元素保留在界限內。 當物件到達彈性邊界時,它會變慢,直到到達界限為止。 在慣性期間,它永遠不會再次保留該邊界,但仍會移動,直到物件的垂直慣性元件減速為 0 為止。 在圖例中,圓圈正向左彈性界限。 實心箭號會顯示操作的方向;實心圓形是物件的初始位置;實心箭號是在圓形到達彈性邊界之前所做的變更;虛線箭號會顯示慣性處理器在到達邊界之後操作圓形的位置;和虛線圓形會顯示物件停止的位置。

注意

設定邊界屬性會將界限向外移動。 例如,如果您的上邊界設定為 50,然後將上層彈性邊界設定為 10,則最上邊界實際上會變成 40。

 

處理 Unmanaged 程式碼中的慣性

慣性

操作