Sdílet prostřednictvím


Mechanika nečinnosti

Inertia se používá k provádění výpočtů pro animaci pohybu objektů a k zajištění podpory obecné použitelnosti v aplikacích, které zahrnují Windows Touch. Tato část ukazuje následující funkce, které jsou povoleny nečinností.

  • Stručný přehled fyziky nečinnosti.
  • Animace hladkého objektu pomocí vlastností rychlosti a zpomalení
  • Animace hladkého objektu pomocí vlastnosti posunutí
  • Odraz z okrajů obrazovky pomocí elastických hranic.

Přehled fyziky nečinnosti

Procesor inertia používá jednoduchý fyzikální model, který zahrnuje pozici, hodnotu zpomalení a počáteční rychlost. Čas se používá jako dynamický vstup modelu k určení aktuální pozice objektu, který se vytěsňuje. Následující graf a vzorec popisují fyzikální model použitý k výpočtu pozic objektů.

obrázek znázorňující graf a vzorec použitý k výpočtu pozic objektů

Ve vzorci použitém pro výpočet aktuální pozice (x) se počáteční rychlost (v) vynásobí časem uplynulým časem (t) a sníží se faktorem decelerace (d) krát násobením času umocněním. Výsledkem je hladké zpomalení objektu. Na předchozím obrázku v počáteční (úplně levé) části křivky se objekt rychle pohybuje, protože jeho aktuální rychlost je počáteční rychlost. V poslední (úplně pravé) části křivky se objekt zcela zastavil, protože jeho rychlost je 0. Výpočty rychlosti objektů pro rychlost x, rychlost y a rotační rychlost používají tento vzorec pro výpočty.

Veškerá vzdálenost použitá pro procesor inertia je relativní. Pokud chcete použít souřadnice obrazovky, předáte souřadnice obrazovky do procesoru manipulace (nebo inertia). Pokud chcete použít absolutní souřadnice, předáte je do procesoru, který používáte. Bez ohledu na hodnoty, které používáte, bude procesor pro zpracování času používat milisekundové časy. Tyto hodnoty lze předat buď přímo procesoru inertia pomocí metody ProcessTime nebo pomocí výchozího časového razítka prostřednictvím volání Process.

Animace hladkého objektu pomocí vlastností rychlost a decelerace

Plynulou animaci můžete povolit přímo interakcí s fyzikálním modelem nastavením hodnot rychlosti a zpomalení v rozhraní procesoru inertia a následným voláním Process. Volání Process aktivuje manipulaci s objekty, které by pak měly způsobit aktualizace uživatelského rozhraní. Hodnoty rychlosti objektů předávané procesoru inertia se obvykle po dokončení přebíjí z manipulátoru. Hodnota zpomalení bude záviset na tom, jak dlouho má být objekt animovaný, a jednotek, které používáte pro výpočty. Vzhledem k tomu, že hodnoty jsou závislé, je někdy nutné škálovat rychlost vstupu z procesoru maniplace a použít libovolné hodnoty pro zpomalení. Následující hodnoty jsou typické pro různé scénáře, kdy předáváte hodnoty centipixel z vlastností x a y TOUCHINPUT struktury manipulace procesoru.

Scénář Sada vlastností Hodnota zpomalení Typické škálování vstupu rychlosti Poznámky
Překlad DesiredDeceleration 0.003f Žádný. Použití této hodnoty bude mít za následek animace delší vzdálenosti při použití dotykového vstupu.
Překlad DesiredDeceleration 0.001f 1/20th počáteční rychlost pro dotykové vstupy, žádná pro vstupy myši Použití této hodnoty bude animovat přibližně za sekundu vzhledem k typickým vstupům rychlosti.
Překlad DesiredDeceleration 0,5f Žádný Použití této hodnoty dává přirozený pocit animace na velkých displejích Windows Touch.
Rotace DesiredAngularDeceleration 0.000015f Radiány se převedou na stupně. Použití této hodnoty vede k delším animacím otočení při použití dotykového vstupu.
Rotace DesiredAngularDeceleration 0.00001f 1/40. rozdíl otáčení pro dotykové vstupy, žádný pro vstupy myši Tato hodnota je v radiánech, takže musíte použít velmi malé deceerace a hodnoty rychlosti.
Rotace DesiredAngularDeceleration 0.000005f Žádný Tato hodnota má přirozený pocit na velkých displejích Windows Touch.

 

Animace hladkého objektu pomocí požadované vlastnosti posunutí

V některých případech nechcete pro posunutí objektu použít vstup uživatele, ale přesto chcete, aby se objekt hladce animuje přes obrazovku. V tomto případě můžete použít vlastnosti posunutí v procesoru inertia, aby procesor vypočítal počáteční rychlost pro pohyb objektu po obrazovce.

Řízení pozice objektu pomocí elastických hranic

Jakmile budete mít objekt, který se pohybuje přes obrazovku, budete ho obvykle chtít zastavit, než přejde mimo bod zobrazení uživatele. Procesor inertia umožňuje tuto funkci prostřednictvím vlastností hranic a elastických okrajů. Následující obrázek znázorňuje různé vlastnosti hranic a okrajů v typické aplikaci.

snímek obrazovky znázorňující vlastnosti hranic a elastických okrajů

Nastavíte levé, horní, pravé a dolní hranice a elastické okraje pro vaši aplikaci a procesor inertia bude zpracovávat zachování prvků uživatelského rozhraní v mezích. Když objekt dosáhne elastického okraje, zpomalí se, dokud nedosáhne hranice. Během nečinnosti nikdy neopustí tento okraj, ale bude se stále pohybovat, dokud se kolmá komponenta objektu zmenší na 0. Na obrázku je kruh posunut směrem k levé elastické hranici. Plná šipka ukazuje směr manipulace; plný kruh je počáteční pozice objektu; plná šipka je změny provedené před tím, než kruh dosáhne elastického okraje; přerušovaná šipka ukazuje, kde procesor inertia manipuluje s kruhem po dosažení okraje; a přerušované kruhy ukazují, kde se objekt zastaví.

Poznámka

Nastavení vlastností okrajů přesune hranice směrem ven. Pokud je například horní hranice nastavená na 50 a pak nastavíte horní elastický okraj na 10, bude horní hranice efektivně 40.

 

zpracování nespravovaného kódu

inertia

manipulace s