Pelatihan
Jalur pembelajaran
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Artikel ini memberikan gambaran singkat tentang cara membuat animasi berbasis relasi menggunakan Ekspresi KomposisiAnimasi.
Saat membangun pengalaman gerakan dalam aplikasi, ada kalanya gerakan tidak berbasis waktu, melainkan bergantung pada properti pada objek lain. KeyFrameAnimations tidak dapat mengekspresikan jenis pengalaman gerakan ini dengan sangat mudah. Dalam instans spesifik ini, gerakan tidak perlu lagi diskrit dan telah ditentukan sebelumnya. Sebaliknya, gerakan dapat beradaptasi secara dinamis berdasarkan hubungannya dengan properti objek lain. Misalnya, Anda dapat menganimasikan keburaman objek berdasarkan posisi horizontalnya. Contoh lain termasuk pengalaman gerakan seperti Header Sticky dan Parallax.
Jenis pengalaman gerakan ini memungkinkan Anda membuat UI yang terasa lebih terhubung, alih-alih merasa tunggal dan independen. Bagi pengguna, ini memberikan kesan pengalaman UI dinamis.
Untuk membuat pengalaman gerakan berbasis relasi, Anda menggunakan jenis ExpressionAnimation. ExpressionAnimations (atau Expressions for short), adalah jenis animasi baru yang memungkinkan Anda mengekspresikan hubungan matematika – hubungan yang digunakan sistem untuk menghitung nilai properti animasi setiap bingkai. Dengan cara lain, Ekspresi hanyalah persamaan matematika yang menentukan nilai yang diinginkan dari properti animasi per bingkai. Ekspresi adalah komponen yang sangat serbaguna yang dapat digunakan di berbagai skenario, termasuk:
Saat bekerja dengan ExpressionAnimations, ada beberapa hal yang layak disebutkan di depan:
Saat membangun hubungan matematika Ekspresi, ada beberapa komponen inti:
Ekspresi juga mendukung sekumpulan kata kunci – frasa khusus yang memiliki arti berbeda hanya dalam sistem ExpressionAnimation. Ini tercantum (bersama dengan daftar lengkap fungsi matematika) dalam dokumentasi ExpressionAnimation .
Ada dua opsi untuk membangun Ekspresi di aplikasi UWP Anda:
Demi dokumen ini, kita akan menentukan Ekspresi kita menggunakan ExpressionBuilder.
Parameter membentuk inti Ekspresi. Ada dua jenis parameter:
Secara umum, Referensi adalah aspek utama tentang bagaimana output Ekspresi dapat berubah secara dinamis. Saat referensi ini berubah, output Ekspresi berubah sebagai hasilnya. Jika Anda membuat Ekspresi dengan String atau menggunakannya dalam skenario templat (menggunakan Ekspresi Anda untuk menargetkan beberapa CompositionObjects), Anda harus memberi nama dan mengatur nilai parameter Anda. Lihat bagian Contoh untuk informasi selengkapnya.
Ekspresi juga dapat digunakan dengan KeyFrameAnimations. Dalam instans ini, Anda ingin menggunakan Ekspresi untuk menentukan nilai KeyFrame pada titik waktu - jenis KeyFrame ini disebut ExpressionKeyFrames.
KeyFrameAnimation.InsertExpressionKeyFrame(Single, String)
KeyFrameAnimation.InsertExpressionKeyFrame(Single, ExpressionNode)
Namun, tidak seperti ExpressionAnimations, ExpressionKeyFrames dievaluasi hanya sekali ketika KeyFrameAnimation dimulai. Perlu diingat, Anda tidak meneruskan ExpressionAnimation sebagai nilai KeyFrame, melainkan string (atau ExpressionNode, jika Anda menggunakan ExpressionBuilder).
Sekarang mari kita telusuri contoh penggunaan Ekspresi, khususnya sampel PropertySet dari Galeri Sampel UI Windows. Kita akan melihat Ekspresi yang mengelola perilaku gerakan orbit bola biru.
Ada tiga komponen yang dimainkan untuk pengalaman total:
Kita akan berfokus pada ExpressionAnimation yang ditentukan dalam #3. Kami juga akan menggunakan kelas ExpressionBuilder untuk membangun Ekspresi ini. Salinan kode yang digunakan untuk membangun pengalaman ini melalui String tercantum di akhir.
Dalam persamaan ini, ada dua properti yang perlu Anda referensikan dari PropertySet; satu adalah offset titik tengah dan yang lainnya adalah rotasi.
var propSetCenterPoint =
_propertySet.GetReference().GetVector3Property("CenterPointOffset");
// This rotation value will animate via KFA from 0 -> 360 degrees
var propSetRotation = _propertySet.GetReference().GetScalarProperty("Rotation");
Selanjutnya, Anda perlu menentukan komponen Vector3 yang memperkirakan rotasi orbit aktual.
var orbitRotation = EF.Vector3(
EF.Cos(EF.ToRadians(propSetRotation)) * 150,
EF.Sin(EF.ToRadians(propSetRotation)) * 75, 0);
Catatan
EF
adalah notasi singkatan "menggunakan" untuk menentukan ExpressionFunctions.
using EF = Microsoft.Toolkit.Uwp.UI.Animations.Expressions.ExpressionFunctions;
Terakhir, gabungkan komponen-komponen ini bersama-sama dan referensikan posisi Red Ball untuk menentukan hubungan matematika.
var orbitExpression = redSprite.GetReference().Offset + propSetCenterPoint + orbitRotation;
blueSprite.StartAnimation("Offset", orbitExpression);
Dalam situasi hipotetis, bagaimana jika Anda ingin menggunakan Ekspresi yang sama ini tetapi dengan dua Visual lainnya, yang berarti 2 set lingkaran yang mengorbit. Dengan CompositionAnimations, Anda dapat menggunakan kembali animasi dan menargetkan beberapa CompositionObjects. Satu-satunya hal yang perlu Anda ubah saat menggunakan Ekspresi ini untuk kasus orbit tambahan adalah referensi ke Visual. Kami menyebut templat ini.
Dalam hal ini, Anda mengubah Ekspresi yang Anda buat sebelumnya. Daripada "mendapatkan" referensi ke CompositionObject, Anda membuat referensi dengan nama lalu menetapkan nilai yang berbeda:
var orbitExpression = ExpressionValues.Reference.CreateVisualReference("orbitRoundVisual");
orbitExpression.SetReferenceParameter("orbitRoundVisual", redSprite);
blueSprite.StartAnimation("Offset", orbitExpression);
// Later on … use same Expression to assign to another orbiting Visual
orbitExpression.SetReferenceParameter("orbitRoundVisual", yellowSprite);
greenSprite.StartAnimation("Offset", orbitExpression);
Berikut adalah kode jika Anda menentukan Ekspresi dengan String melalui API publik.
ExpressionAnimation expressionAnimation = compositor.CreateExpressionAnimation("visual.Offset + " +
"propertySet.CenterPointOffset + " +
"Vector3(cos(ToRadians(propertySet.Rotation)) * 150," + "sin(ToRadians(propertySet.Rotation)) * 75, 0)");
var propSetCenterPoint = _propertySet.GetReference().GetVector3Property("CenterPointOffset");
var propSetRotation = _propertySet.GetReference().GetScalarProperty("Rotation");
expressionAnimation.SetReferenceParameter("propertySet", _propertySet);
expressionAnimation.SetReferenceParameter("visual", redSprite);
Pelatihan
Jalur pembelajaran
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Dokumentasi
Animasi waktu - UWP applications
Pelajari cara menggunakan kelas KeyFrameAnimations untuk membuat animasi berbasis waktu yang memandu pengguna melalui perubahan UI.
Animasi gerakan alami - UWP applications
Pelajari tentang animasi gerakan alami dan cara menggunakannya di antarmuka pengguna aplikasi Anda.
Animasi berbasis input - UWP applications
Pelajari tentang API InputAnimation, dan cara menggunakan animasi berbasis input untuk membuat gerakan yang merespons secara dinamis di UI aplikasi Anda.