Timeline.CurrentGlobalSpeedInvalidated Gebeurtenis
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Treedt op wanneer de snelheid waarmee het tijdstip van de klok van de tijdlijn verandert.
public:
event EventHandler ^ CurrentGlobalSpeedInvalidated;
public event EventHandler CurrentGlobalSpeedInvalidated;
member this.CurrentGlobalSpeedInvalidated : EventHandler
Public Custom Event CurrentGlobalSpeedInvalidated As EventHandler
Gebeurtenistype
Voorbeelden
In het volgende voorbeeld ziet u hoe u zich registreert voor de CurrentGlobalSpeedInvalidated gebeurtenis.
/*
This example shows how to register for the
CurrentGlobalSpeedInvalidated event
using a Timeline.
*/
using System;
using System.Windows;
using System.Windows.Navigation;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Controls;
using System.Windows.Input;
namespace Microsoft.Samples.Animation.TimingBehaviors
{
public class TimelineCurrentGlobalSpeedInvalidatedExample : Page {
private TextBlock currentTimeTextBlock;
public TimelineCurrentGlobalSpeedInvalidatedExample()
{
// Create a name scope.
NameScope.SetNameScope(this, new NameScope());
WindowTitle = "GetAnimationBaseValue Example";
StackPanel myPanel = new StackPanel();
myPanel.Margin = new Thickness(20);
// Create a rectangle.
Rectangle animatedRectangle = new Rectangle();
animatedRectangle.Width = 100;
animatedRectangle.Height = 50;
animatedRectangle.Margin = new Thickness(50);
animatedRectangle.Fill = Brushes.Orange;
animatedRectangle.Stroke = Brushes.Gray;
animatedRectangle.StrokeThickness = 2;
// Create a RotateTransform.
RotateTransform animatedTransform = new RotateTransform();
animatedTransform.Angle = 0;
this.RegisterName("animatedTransform", animatedTransform);
animatedRectangle.RenderTransform = animatedTransform;
animatedRectangle.RenderTransformOrigin = new Point(0.5,0.5);
myPanel.Children.Add(animatedRectangle);
this.Content = myPanel;
// Create a TextBlock to show the storyboard's current time.
currentTimeTextBlock = new TextBlock();
myPanel.Children.Add(currentTimeTextBlock);
// Animate the RotateTransform's angle using a Storyboard.
DoubleAnimation angleAnimation = new DoubleAnimation(0,360, TimeSpan.FromSeconds(5));
angleAnimation.RepeatBehavior = RepeatBehavior.Forever;
angleAnimation.AutoReverse = true;
Storyboard.SetTargetName(angleAnimation, "animatedTransform");
Storyboard.SetTargetProperty(angleAnimation,
new PropertyPath(RotateTransform.AngleProperty));
Storyboard theStoryboard = new Storyboard();
theStoryboard.Children.Add(angleAnimation);
// Register the CurrentGlobalSpeedInvalidated event.
// You must register for events before you begin
// the storyboard.
angleAnimation.CurrentGlobalSpeedInvalidated +=
new EventHandler(angleAnimation_CurrentGlobalSpeedInvalidated);
// Start the storyboard.
theStoryboard.Begin(animatedRectangle, true);
}
private void angleAnimation_CurrentGlobalSpeedInvalidated(object sender, EventArgs e)
{
// Sender is the clock that was created for the DoubleAnimation.
Clock doubleAnimationClock = (Clock)sender;
// Update the TextBlock with the time of its parent.
currentTimeTextBlock.Text = doubleAnimationClock.Parent.CurrentTime.ToString();
}
}
}
'
'
' This example shows how to register for the
' CurrentGlobalSpeedInvalidated event
' using a Timeline.
'
'
Imports System.Windows
Imports System.Windows.Navigation
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes
Imports System.Windows.Controls
Imports System.Windows.Input
Namespace Microsoft.Samples.Animation.TimingBehaviors
Public Class TimelineCurrentGlobalSpeedInvalidatedExample
Inherits Page
Private currentTimeTextBlock As TextBlock
Public Sub New()
' Create a name scope.
NameScope.SetNameScope(Me, New NameScope())
WindowTitle = "GetAnimationBaseValue Example"
Dim myPanel As New StackPanel()
myPanel.Margin = New Thickness(20)
' Create a rectangle.
Dim animatedRectangle As New Rectangle()
With animatedRectangle
.Width = 100
.Height = 50
.Margin = New Thickness(50)
.Fill = Brushes.Orange
.Stroke = Brushes.Gray
.StrokeThickness = 2
End With
' Create a RotateTransform.
Dim animatedTransform As New RotateTransform()
animatedTransform.Angle = 0
Me.RegisterName("animatedTransform", animatedTransform)
animatedRectangle.RenderTransform = animatedTransform
animatedRectangle.RenderTransformOrigin = New Point(0.5, 0.5)
myPanel.Children.Add(animatedRectangle)
Me.Content = myPanel
' Create a TextBlock to show the storyboard's current time.
currentTimeTextBlock = New TextBlock()
myPanel.Children.Add(currentTimeTextBlock)
' Animate the RotateTransform's angle using a Storyboard.
Dim angleAnimation As New DoubleAnimation(0, 360, TimeSpan.FromSeconds(5))
angleAnimation.RepeatBehavior = RepeatBehavior.Forever
angleAnimation.AutoReverse = True
Storyboard.SetTargetName(angleAnimation, "animatedTransform")
Storyboard.SetTargetProperty(angleAnimation, New PropertyPath(RotateTransform.AngleProperty))
Dim theStoryboard As New Storyboard()
theStoryboard.Children.Add(angleAnimation)
' Register the CurrentGlobalSpeedInvalidated event.
' You must register for events before you begin
' the storyboard.
AddHandler angleAnimation.CurrentGlobalSpeedInvalidated, AddressOf angleAnimation_CurrentGlobalSpeedInvalidated
' Start the storyboard.
theStoryboard.Begin(animatedRectangle, True)
End Sub
Private Sub angleAnimation_CurrentGlobalSpeedInvalidated(ByVal sender As Object, ByVal e As EventArgs)
' Sender is the clock that was created for the DoubleAnimation.
Dim doubleAnimationClock As Clock = CType(sender, Clock)
' Update the TextBlock with the time of its parent.
currentTimeTextBlock.Text = doubleAnimationClock.Parent.CurrentTime.ToString()
End Sub
End Class
End Namespace
Opmerkingen
De huidige globale snelheid van de klok van een tijdlijn verandert in de volgende omstandigheden:
De klok verandert de richting vanwege de instelling van AutoReverse de tijdlijn.
De klok versnelt of vertraagt vanwege de AccelerationRatio instellingen van de tijdlijn of DecelerationRatio eigenschap.
De klok is onderbroken of hervat.
De klok wordt inactief of wordt opnieuw geactiveerd.
Het CurrentGlobalSpeed van een van de bovenliggende wijzigingen van de klok.
De CurrentGlobalSpeedInvalidated gebeurtenis is handig om bij te houden wanneer de klok van een tijdlijn wordt onderbroken. Gebruik in de gebeurtenis-handler de methode van GetCurrentGlobalSpeed uw storyboard of controleer de eigenschap van IsPaused de klok om te bepalen of de klok is onderbroken. Vergelijk deze met een eerder in de cache opgeslagen waarde om te bepalen of deze is gewijzigd.
De Object parameter van de EventHandler gebeurtenis-handler is de tijdlijn Clock.
Hoewel deze gebeurtenis-handler lijkt te zijn gekoppeld aan een tijdlijn, wordt deze daadwerkelijk geregistreerd bij de Clock gemaakte voor deze tijdlijn. Zie het overzicht van tijdsinstellingen voor meer informatie.