Zamanlama Olaylarına Genel Bakış
Bu konu üzerinde beş zamanlama olayları nasıl açıklar Timeline ve Clock nesneler.
Prerequisites
Bu konuda anlamak için nasıl animasyonlar oluşturmak ve anlamanız gerekir. Animasyon ile başlamak için bkz: Animasyona Genel bakış.
İçinde özelliklerine animasyon uygulamak için birden çok yolu vardır WPF:
Film şeridi nesneleri kullanarak (biçimlendirme ve kodu): Kullanabileceğiniz Storyboard nesneleri düzenleme ve dağıtmak animasyonlar için bir veya daha fazla nesne. For an example, see Nasıl Yapılır: Film Şeridi Kullanarak Özellik Hareketlendirme.
Yerel canlandırmalarını kullanarak (yalnızca kodu): Uygulayabileceğiniz AnimationTimeline bunlar animasyon özelliklerini doğrudan nesnelere. For an example, see Nasıl Yapılır: Film Şeridi Kullanmadan Özellik Hareketlendirme.
Saatler kullanarak (yalnızca kodu): Açıkça saat oluşturma yönetmek ve animasyon saatleri kendinize dağıtın. For an example, see Nasıl Yapılır: AnimationClock Kullanarak Bir Özelliği Hareketlendirme.
Bunları biçimlendirme ve kodu kullanabilirsiniz çünkü bu genel örnekler kullanmak Storyboard nesneler. Ancak, açıklanan kavramlar animasyon özelliklerini diğer yöntemler için uygulanabilir.
Bir saat nedir?
Bir zaman çizelgesi kendisi tarafından gerçekten bir şey yapamayacakları dışında bir zaman parçası açıklamak. Zaman Çizelgesi'nin ise Clock gerçek çalışma nesne: Bu zaman çizelgesi için zamanlama ile ilgili çalışma zamanı durumunu korur. Ne zaman kullanarak storyboards gibi birçok durumda, bir saat, zaman çizelgesi için otomatik olarak oluşturulur. Ayrıca oluşturabilirsiniz bir Clock açıkça kullanarak CreateClock yöntemi. For more information about Clock objects, see the Animasyon ve Zamanlama Sistemi Özeti.
Olaylar neden kullanılır?
Dışında bir (son ilerlemelerin hizalanmış arama), tüm etkileşimli zamanlama işlemi eşzamanlı değildir. Siz tam olarak ne zaman onlar yürütülür bilmek mümkün değildir. Planlama işleminizi bağımlı olan diğer kod varsa, bir sorun olabilir. Bir dikdörtgen animasyonlu bir zaman çizelgesi durdurmak istediğinizi varsayalım. Zaman Çizelgesi durdurulduktan sonra dikdörtgenin rengini değiştirin.
myStoryboard.Stop(myRectangle)
' This statement might execute
' before the storyboard has stopped.
myRectangle.Fill = Brushes.Blue
myStoryboard.Stop(myRectangle);
// This statement might execute
// before the storyboard has stopped.
myRectangle.Fill = Brushes.Blue;
Önceki örnekte, kodun ikinci satırı, film şeridi durdurulmadan önce çalıştırmak. Durdurma bir zaman uyumsuz işlem olmasıdır. Bir zaman çizelgesi ya da durdurma saati söyleyen "durdurma isteği" oluşturur Zamanlama altyapısının sonraki çentik kadar iþlenmez tür.
Bir zaman çizelgesi tamamlandıktan sonra komutları yürütmek için zamanlama olayları kullanın. Aşağıdaki örnekte, bir olay işleyicisi, film şeridi çalmayı durduracağını sonra dikdörtgenin rengini değiştirmek için kullanılır.
' Register for the CurrentStateInvalidated timing event.
AddHandler myStoryboard.CurrentStateInvalidated, AddressOf myStoryboard_CurrentStateInvalidated
// Register for the CurrentStateInvalidated timing event.
myStoryboard.CurrentStateInvalidated += new EventHandler(myStoryboard_CurrentStateInvalidated);
Daha tam bir örnek için bkz: Nasıl Yapılır: Saatin Durumu Değiştiğinde Bildirim Alma.
Public Events
Timeline Ve Clock sınıflarının her ikisi de sağlayan beş zamanlama olayları. Aşağıdaki tablo bu olaylar ve bunları tetikleyecek koşulları listeler.
Event |
Tetikleyici etkileşimli işlem |
Diğer Tetikleyiciler |
---|---|---|
Completed |
Doldurmak için Atla |
Saatin tamamlar. |
CurrentGlobalSpeedInvalidated |
Duraklatma, sürdürme, arama, hızı oranını ayarlamak, Atla doldurmak için Durdur |
Saatin ters çevirir hızlandırır başlatır veya durdurur. |
CurrentStateInvalidated |
Başlamak için atlamak doldurmak için Durdur |
Saat, durdurur, başlatır veya doldurur. |
CurrentTimeInvalidated |
Başlamak için arama, Atla doldurmak için Durdur |
Saat ilerler. |
RemoveRequested |
Remove |
Ticking ve olay birleştirilir
Nesnelere animasyon ne zaman WPF, onu zamanlama altyapısı, yönetir, animasyonlar. Zamanlama altyapısı çözümlemesinin süreyi izler ve her animasyon durumunu hesaplar. Bir saniye içinde gibi birçok değerlendirme geçişlerini kolaylaştırır. Bu değerlendirme geçişleri "işaretleri" olarak bilinir
While ticks occur frequently, it's possible for a lot of things to happen between ticks. Örneğin, bir zaman çizelgesi durduruldu, başladı ve yeniden durdurulmuş durumda geçerli durumunu üç kez değişmiş. Teorik olarak, olay birden çok kez tek bir çentik Kabarık; Ancak, böylece her olay tick en fazla bir kez yükseltilebilir zamanlama altyapısı olayları birleştirir.
Olayları kaydediliyor
Zamanlama olayları kaydetmek için iki yol vardır: Zaman Çizelgesi'nden oluşturulan saat veya zaman çizelgesi ile kaydedebilirsiniz. Yalnızca kodundan yapılabilir, ancak bir saat ile doğrudan organizasyona oldukça, basittir. Olayların zaman çizelgesi biçimlendirme veya kod ile kaydedebilirsiniz. Sonraki bölümde, bir zaman çizelgesi ile saat olayları kaydetmek açıklar.
Bir zaman çizelgesi ile saat olayları kaydediliyor
Bir zaman çizelgesi rağmen 's Completed, CurrentGlobalSpeedInvalidated, CurrentStateInvalidated, CurrentTimeInvalidated, ve RemoveRequested olaylar görünür Bu olaylar aslında associates için bir olay işleyicisi ile kaydetme, zaman çizelgesi ile ilişkilendirilecek Clock oluşturulan zaman çizelgesi.
Ne zaman sizi kaydetmek için Completed bir Zaman Çizelgesi'ndeki olay, örneğin gerçekten söyleyen kaydetmek için sistem Completed her saat için zaman çizelgesi oluşturulan olay Önce bu olay için kaydettirmelisiniz kodda, Clock için bu zaman çizelgesi; oluşturuldu Aksi takdirde, bildirim almazsınız. Otomatik olarak bir de böyle XAML; Çözümleyici, önce olayı için otomatik olarak kaydeden Clock oluşturulur.