Animasyon ve Zamanlama Sistemine Genel Bakış

Bu konuda zamanlama sisteminin özelliklere animasyon oluşturmak için Timeline animasyonu, ve Clock sınıflarını nasıl kullandığı açıklanmıştır.

Önkoşullar

Bu konuyu anlamak için, Animasyona Genel Bakış'ta açıklandığı gibi özelliklere animasyonlar oluşturmak için WPF animasyonlarını kullanasınız. Ayrıca bağımlılık özellikleri hakkında bilgi sahibi olmak da yardımcı olur; Daha fazla bilgi için bkz. Bağımlılık Özelliklerine Genel Bakış.

Zaman Çizelgeleri ve Saatler

Animasyona Genel Bakış bölümünde bir değerin bir zaman segmentini nasıl temsil ettiği ve animasyonun çıkış değerleri üreten bir tür olduğu Timeline açıklanmıştır. Tek başına, Timeline bir , yalnızca bir zaman segmentini açıklamaktan başka bir şey yapmaz. Gerçek işi zaman Clock çizelgesinin nesnesi yapar. Benzer şekilde, animasyon özelliklere gerçekten animasyon oluşturmaz: Animasyon sınıfı, çıkış değerlerinin nasıl hesaplanması gerektiğini açıklar, ancak animasyon çıktısını oluşturan ve özelliklere uygulanan animasyon için bu Clock değerdir.

, Clock için zamanlamayla ilgili çalışma zamanı durumunu sürdüren özel türde bir nesnedir. Timeline Animasyon ve zamanlama sistemi için temel olan üç bilgi sağlar: CurrentTime , CurrentProgress ve CurrentState . , , , ve gibi tarafından tanımlanan zamanlama davranışlarını kullanarak geçerli saati, ilerleme durumunu ve ClockTimeline durumunu DurationRepeatBehaviorAutoReverse belirler.

Çoğu durumda, zaman Clock çizelgeniz için otomatik olarak bir oluşturulur. veya yöntemini kullanarak animasyona animasyonlar ekleyebilirsiniz. Saatler, zaman çizelgeleriniz ve animasyonlar için otomatik olarak oluşturulur ve hedeflenen StoryboardBeginAnimation özelliklerine uygulanır. Ayrıca, yönteminizi Clock kullanarak açıkça CreateClock bir Timeline oluşturabilirsiniz. yöntemi, MediaTimeline.CreateClock çağrıldıları için uygun türde Timeline bir saat oluşturur. alt Timeline zaman çizelgeleri içeriyorsa, onlar Clock için de nesneler oluşturur. Sonuçta elde Clock edilen nesneler, oluşturuldukları nesne ağacının Timeline yapısıyla eşanacak şekilde ağaçlarda düzenlenmiştir.

Farklı zaman çizelgesi türleri için farklı saat türleri vardır. Aşağıdaki tabloda, bazı Clock farklı türlere karşılık gelen türler Timeline gösterir.

Zaman çizelgesi türü Saat türü Saat amacı
Animasyon ('den AnimationTimeline devralınıyor) AnimationClock Bağımlılık özelliği için çıkış değerleri oluşturur.
MediaTimeline MediaClock Bir medya dosyasını işleme.
ParallelTimeline ClockGroup Alt nesnelerini gruplar ve Clock kontrol eder
Storyboard ClockGroup Alt nesnelerini gruplar ve Clock kontrol eder

yöntemini AnimationClock kullanarak, uyumlu bağımlılık özelliklerine oluştursanız herhangi bir nesne ApplyAnimationClock uygulayabilirsiniz.

Çok sayıda benzer nesneye animasyon animasyonu oluşturma gibi performans yoğun senaryolarda, kendi kullanımınızı Clock yönetmek performans avantajları sağlar.

Saatler ve Zaman Yöneticisi

WPF'de nesnelere animasyon ekleyebilirsiniz; zaman çizelgeleriniz için Clock oluşturulan nesneleri yöneten zaman yöneticisidir. Zaman yöneticisi bir nesne ağacının Clock kökündedir ve bu ağaçtaki zaman akışını kontrol eder. Her WPF uygulaması için otomatik olarak bir zaman yöneticisi oluşturulur ve uygulama geliştiricisi tarafından görünmez. Zaman yöneticisi saniye başına birçok kez "tıklar"; her saniye oluşan gerçek tık sayısı, kullanılabilir sistem kaynaklarına bağlı olarak değişir. Bu saat işaretlerinin her biri sırasında, zaman yöneticisi zamanlama ağacının tüm ActiveClock nesnelerinin durumunu hesaplar.

Aşağıdaki çizimde, zaman yöneticisi ile arasındaki ilişki ve AnimationClock animasyonlu bağımlılık özelliği gösterilmiştir.

Timing system components
Özellik animasyonu

Zaman yöneticisi tıklarsa, uygulamanın her ActiveClock zamanının zamanlarını günceller. bir ise, geçerli çıkış değerini hesaplamak için oluşturulduktan ClockAnimationClock yöntemini GetCurrentValueAnimationTimeline kullanır. AnimationClock, geçerli yerel saat, genellikle özelliğin temel değeri olan bir giriş değeri ve varsayılan hedef AnimationTimeline değeri ile sağlar. yöntemini veya CLR erişimcisini kullanarak animasyonlu by GetValue özelliğinin değerini alınca, özelliğinin çıkışını elde olur. AnimationClock

Saat Grupları

Önceki bölümde, farklı zaman çizelgesi türleri için Clock farklı nesne türlerinin nasıl olduğu açıklanmıştır. Aşağıdaki çizimde, zaman yöneticisi, ClockGroup , bir ve animasyonlu bağımlılık özelliği arasındaki ilişki AnimationClock gösterilmiştir. , animasyonları ve diğer zaman çizelgelerini grup oluşturan sınıfı gibi diğer zaman ClockGroupStoryboard çizelgelerini gruplatan zaman çizelgeleri için oluşturulur.

Timing system components
A ClockGroup

Birleşim

Birden çok saati tek bir özellik ile ilişkilendirmek mümkündür; bu durumda her saat taban değeri olarak önceki saatin çıkış değerini kullanır. Aşağıdaki çizimde aynı AnimationClock özele uygulanan üç nesne gösterilmiştir. Clock1, giriş olarak animasyonlu özelliğin temel değerini kullanır ve çıkış oluşturmak için bunu kullanır. Clock2, giriş olarak Clock1 çıkışını alır ve çıkış oluşturmak için kullanır. Clock3, giriş olarak Clock2 çıkışını alır ve çıkış oluşturmak için kullanır. Aynı özelliği birden çok saat aynı anda etkileyene zaman, bunların bir bileşim zincirinde olduğu ifade edilir.

Timing system components
Bir bileşim zinciri

Bir ilişki, oluşturma zincirinde nesnelerin giriş ve çıkışı arasında oluşturulmuş olsa da zamanlama davranışları etkilenmez; nesnelerin (nesneler dahil) üst nesneleri üzerinde hiyerarşik bir AnimationClockClock bağımlılığı AnimationClockClock vardır.

Aynı özele birden çok saat uygulamak için, , ComposeHandoffBehavior animasyonu veya Storyboard uygularken AnimationClock kullanın.

Tıklar ve Olay Birleştirme

Zaman yöneticisi, çıkış değerlerini hesaplamaya ek olarak her tıklanmasında başka işler de yapar: her saatin durumunu belirler ve olayları uygun şekilde oluşturur.

Sık sık tıklar yaşansa da, tıklar arasında birçok şey olabilir. Örneğin, bir Clock durdurulmuş, başlat ve yeniden durdurulmuş olabilir; bu durumda CurrentState değeri üç kez değişmiş olur. Teoride, olay tek bir değerde birden çok kez yükseltilebilecektir; ancak zamanlama altyapısı olayları birleştirmektedir ve böylece olay her bir değer işareti başına en CurrentStateInvalidatedCurrentStateInvalidated fazla bir kez yükseltilebilecektir. Bu, tüm zamanlama olayları için doğrudur: her türün en çok bir olayı, verilen bir nesne için Clock ortaya çıkar.

Bir geçiş durumuna geldiğinde ve tıklar arasında özgün durumuna geri döndüğünde (örneğin, 'den'e ve geri'ye geçiş) Clock ilişkili olay yine de ActiveStoppedActive gerçekleşir.

Zamanlama olayları hakkında daha fazla bilgi için bkz. Zamanlama Olaylarını Genel Bakış.

Özelliklerin Geçerli Değerleri ve Temel Değerleri

Animasyona animasyon özelliği iki değere sahip olabilir: temel değer ve geçerli değer. CLR erişimcisini veya yöntemini kullanarak özelliği SetValue ayar her zaman temel değerini ayarlayın. Bir özellik animasyonlu değildir, temel ve geçerli değerleri aynıdır.

Bir özelle animasyona animasyon AnimationClock 7'ler, özelliğin geçerli AnimationClock ayarlar. Özelliğin değerini CLR erişimcisi veya yöntemi aracılığıyla almak, veya olduğunda GetValueAnimationClockAnimationClock değerinin çıkışını ActiveFilling döndürür. özelliğinin temel değerini almak için yöntemini GetAnimationBaseValue kullanabilirsiniz.

Ayrıca bkz.