此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
MSDN Library
信息
您所需的主题如下所示。但此主题未包含在此库中。

Storyboard 类

2013/12/13

通过时间线控制动画,并为其子动画提供对象和属性目标信息。

Namespace:  System.Windows.Media.Animation
程序集:  System.Windows(位于 System.Windows.dll 中)
XMLNS for XAML: 未映射到 xmlns。

[ContentPropertyAttribute("Children", true)]
public sealed class Storyboard : Timeline
<Storyboard ...>
  oneOrMoreChildTimelines
</Storyboard>

XAML 值

oneOrMoreChildTimelines

Timeline 派生的类的一个或多个对象元素。这可以是另一个 Storyboard,也可以是许多动画类型中的任意一种。

Storyboard 类型公开以下成员。

  名称说明
公共方法Storyboard初始化 Storyboard 类的新实例。
返回顶部

  名称说明
公共属性AutoReverse获取或设置一个值,该值指示时间线在完成向前迭代后是否按相反的顺序播放。 (从 Timeline 继承。)
公共属性BeginTime获取或设置此 Timeline 将要开始的时间。 (从 Timeline 继承。)
公共属性Children获取子 Timeline 对象的集合。
公共属性Dispatcher获取与此对象关联的 Dispatcher (从 DependencyObject 继承。)
公共属性Duration获取或设置此时间线播放的时间长度,而不是计数重复。 (从 Timeline 继承。)
公共属性FillBehavior获取或设置一个值,该值指定动画在其活动期结束后的行为方式。 (从 Timeline 继承。)
公共属性RepeatBehavior获取或设置此时间线的重复行为。 (从 Timeline 继承。)
公共属性SpeedRatio获取或设置此 Timeline 的时间相对于其父级的前进速率。 (从 Timeline 继承。)
返回顶部

  名称说明
公共附加属性TargetName获取或设置要进行动画处理的对象的名称。
公共附加属性TargetProperty获取或设置应进行动画处理的属性的名称。
返回顶部

  名称说明
公共方法Begin启动与演示图板关联的那组动画。
公共方法CheckAccess确定调用线程是否可以访问此对象。 (从 DependencyObject 继承。)
公共方法ClearValue清除依赖项属性的本地值。 (从 DependencyObject 继承。)
公共方法Equals(Object)确定指定的 Object 是否等于当前的 Object (从 Object 继承。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetAnimationBaseValue返回为 Windows Phone 依赖项属性设置的任意基值,在动画不活动时将应用它们。 (从 DependencyObject 继承。)
公共方法GetCurrentState获取演示图板的时钟状态。
公共方法GetCurrentTime获取演示图板的当前时间。
公共方法GetHashCode用作特定类型的哈希函数。 (从 Object 继承。)
公共方法静态成员GetTargetName获取指定 Timeline 对象的 TargetName
公共方法静态成员GetTargetProperty获取指定 Timeline 对象的 TargetProperty
公共方法GetType获取当前实例的 Type (从 Object 继承。)
公共方法GetValueDependencyObject 返回依赖项属性的当前有效值。 (从 DependencyObject 继承。)
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法Pause暂停与演示图板关联的动画时钟。
公共方法ReadLocalValue返回依赖项属性的本地值(如果设置了本地值)。 (从 DependencyObject 继承。)
公共方法Resume使与演示图板关联的动画时钟(或称运行时状态)继续运行。
公共方法Seek将演示图板移动到指定动画位置。演示图板在时钟下一次走动时执行请求的定位操作。
公共方法SeekAlignedToLastTick立即(以同步方式)将演示图板移动到指定动画位置。
公共方法静态成员SetTarget导致指定的 Timeline 以指定对象为目标。
公共方法静态成员SetTargetName使指定的 Timeline 以具有指定名称的对象为目标。
公共方法静态成员SetTargetProperty使指定的 Timeline 以指定的依赖项属性为目标。
公共方法SetValueDependencyObject 设置依赖项属性的本地值。 (从 DependencyObject 继承。)
公共方法SkipToFill将演示图板的时钟的当前时间后调至其活动期结束时间。
公共方法Stop停止演示图板。
公共方法ToString返回一个字符串,它表示当前的对象。 (从 Object 继承。)
返回顶部

  名称说明
公共事件CompletedStoryboard 对象完成播放时发生。 (从 Timeline 继承。)
返回顶部

  名称说明
公共字段静态成员TargetNameProperty标识 TargetName 附加属性。
公共字段静态成员TargetPropertyProperty标识 TargetProperty 附加属性。
返回顶部

可以考虑将 Storyboard 作为其他动画对象(例如 DoubleAnimation)以及其他 Storyboard 对象的容器。换句话说,可以在 Storyboard 对象中彼此嵌套并分别为每个 Storyboard 指定 BeginTime 值。使用嵌套的演示图板可帮助您安排精心设计的动画序列。每个子 Storyboard 都会在其父 Storyboard 开始前等待,然后开始倒计时,直到轮到该子对象开始为止。

可以使用 Storyboard 对象的交互式方法来启动、暂停、继续和停止动画。有关更多信息,请参见 Windows Phone 动画、动作和输出

说明注意:

不要试图在页面的构造函数中调用 Storyboard 成员(例如 Begin)。这将导致动画失败,且无任何提示。

下面的示例演示如何使用 BeginStopPauseResume 方法来控制演示图板(动画)的播放。一组按钮允许用户调用这些方法。


<phone:PhoneApplicationPage x:Class="interactive_animation.Page"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="800" d:DesignWidth="480">
    <StackPanel>
        <TextBlock Margin="10" TextWrapping="Wrap">This sample uses the Begin, Pause, Resume, and Stop methods to control an animation.</TextBlock>
        <Canvas>
            <Canvas.Resources>
                <Storyboard x:Name="myStoryboard">

                    <!-- Animate the center point of the ellipse. -->
                    <PointAnimation Storyboard.TargetProperty="Center"
          Storyboard.TargetName="MyAnimatedEllipseGeometry"
          Duration="0:0:5"
          From="20,200"
          To="400,100"
          RepeatBehavior="Forever" />
                </Storyboard>
            </Canvas.Resources>

            <Path Fill="Blue">
                <Path.Data>
                    <!-- Describes an ellipse. -->
                    <EllipseGeometry x:Name="MyAnimatedEllipseGeometry"
          Center="20,20" RadiusX="15" RadiusY="15" />
                </Path.Data>
            </Path>

            <StackPanel Orientation="Horizontal" Canvas.Left="0" Canvas.Top="265">
                <!-- Button that begins animation. -->
                <Button Click="Animation_Begin"
        Content="Begin" />

                <!-- Button that pauses Animation. -->
                <Button Click="Animation_Pause"
        Content="Pause" />

                <!-- Button that resumes Animation. -->
                <Button Click="Animation_Resume"
        Content="Resume" />

                <!-- Button that stops Animation. Stopping the animation returns the
        ellipse to its original location. -->
                <Button Click="Animation_Stop"
        Content="Stop" />
            </StackPanel>

        </Canvas>
    </StackPanel>
</phone:PhoneApplicationPage>



private void Animation_Begin(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin();
}
private void Animation_Pause(object sender, RoutedEventArgs e)
{
    myStoryboard.Pause();
}
private void Animation_Resume(object sender, RoutedEventArgs e)
{
    myStoryboard.Resume();
}
private void Animation_Stop(object sender, RoutedEventArgs e)
{
    myStoryboard.Stop();
}


下面的示例演示如何使用代码创建 Storyboard


private void Create_And_Run_Animation(object sender, EventArgs e)
{
    // Create a red rectangle that will be the target
    // of the animation.
    Rectangle myRectangle = new Rectangle();
    myRectangle.Width = 200;
    myRectangle.Height = 200;
    Color myColor = Color.FromArgb(255, 255, 0, 0);
    SolidColorBrush myBrush = new SolidColorBrush();
    myBrush.Color = myColor;
    myRectangle.Fill = myBrush;

    // Add the rectangle to the tree.
    LayoutRoot.Children.Add(myRectangle);

    // Create a duration of 2 seconds.
    Duration duration = new Duration(TimeSpan.FromSeconds(2));

    // Create two DoubleAnimations and set their properties.
    DoubleAnimation myDoubleAnimation1 = new DoubleAnimation();
    DoubleAnimation myDoubleAnimation2 = new DoubleAnimation();

    myDoubleAnimation1.Duration = duration;
    myDoubleAnimation2.Duration = duration;

    Storyboard sb = new Storyboard();
    sb.Duration = duration;

    sb.Children.Add(myDoubleAnimation1);
    sb.Children.Add(myDoubleAnimation2);

    Storyboard.SetTarget(myDoubleAnimation1, myRectangle);
    Storyboard.SetTarget(myDoubleAnimation2, myRectangle);

    // Set the attached properties of Canvas.Left and Canvas.Top
    // to be the target properties of the two respective DoubleAnimations.
    Storyboard.SetTargetProperty(myDoubleAnimation1, new PropertyPath("(Canvas.Left)"));
    Storyboard.SetTargetProperty(myDoubleAnimation2, new PropertyPath("(Canvas.Top)"));

    myDoubleAnimation1.To = 200;
    myDoubleAnimation2.To = 200;

    // Make the Storyboard a resource.
    LayoutRoot.Resources.Add("unique_id", sb);

    // Begin the animation.
    sb.Begin();
}


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

此类型的所有公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2015 Microsoft