Timeline.CurrentGlobalSpeedInvalidated Event

Definition

Происходит при изменении скорости течения времени для часов шкалы времени.Occurs when the rate at which time progresses for the timeline's clock changes.

public:
 event EventHandler ^ CurrentGlobalSpeedInvalidated;
public event EventHandler CurrentGlobalSpeedInvalidated;
member this.CurrentGlobalSpeedInvalidated : EventHandler 
Public Custom Event CurrentGlobalSpeedInvalidated As EventHandler 

Examples

В следующем примере показано, как зарегистрировать событие CurrentGlobalSpeedInvalidated.The following example shows how to register for the CurrentGlobalSpeedInvalidated event.

/*

   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

Remarks

Текущая глобальная скорость изменения часов временной шкалы в следующих случаях:The current global speed of a timeline's clock changes in the following circumstances:

  • Направление изменения часов из-за настройки AutoReverse временной шкалы.The clock changes direction because of its timeline's AutoReverse setting.

  • Тактовые значения ускоряются или замедлены из-за AccelerationRatio или DecelerationRatio значений свойств временной шкалы.The clock accelerates or decelerates because of its timeline's AccelerationRatio or DecelerationRatio property settings.

  • Часы приостановлены или возобновлены.The clock is paused or resumed.

  • Часы становятся неактивными или повторно активированы.The clock becomes inactive or reactivates.

  • CurrentGlobalSpeed одного из родительских изменений часов.The CurrentGlobalSpeed of one of the clock's parent changes.

Событие CurrentGlobalSpeedInvalidated полезно для отслеживания времени приостановки часов временной шкалы. в обработчике событий используйте метод GetCurrentGlobalSpeed раскадровки или проверьте свойство IsPaused часов, чтобы определить, приостановлены ли его часы. Сравните это с ранее кэшированным значением, чтобы определить, изменился ли он.The CurrentGlobalSpeedInvalidated event is useful for tracking when a timeline's clock becomes paused; in your event handler, use your storyboard's GetCurrentGlobalSpeed method or check the clock's IsPaused property to determine whether its clock is paused; compare this against a previously cached value to determine whether it changed.

Параметр Object обработчика событий EventHandler является Clockвременной шкалы.The Object parameter of the EventHandler event handler is the timeline's Clock.

Несмотря на то, что этот обработчик событий связан со временной шкалой, он фактически регистрируется в Clock, созданном для этой временной шкалы.Although this event handler appears to be associated with a timeline, it actually registers with the Clock created for this timeline. Дополнительные сведения см. в статье Общие сведения о временных событиях.For more information, see the Timing Events Overview.

Applies to

See also