如何计算情节提要动画循环播放多少次?

时间:2018-10-18 05:49:01

标签: c# wpf xaml animation

我有这样的代码

String

并使用此代码应用了此动画样式

    <Storyboard x:Key="AdvMarquee" Completed="Storyboard_Completed">
        <DoubleAnimation Storyboard.TargetProperty="(Canvas.Top)" From="-25"    To="0"      BeginTime="0:00:00" Duration="0:00:01" />
        <DoubleAnimation Storyboard.TargetProperty="(Canvas.Top)" From="0"      To="25"     BeginTime="0:00:03" Duration="0:00:01" />
    </Storyboard>
    <Style x:Key="AnimationImageStyle" TargetType="StackPanel">
        <Setter Property="Canvas.Top" Value="200" />
        <Style.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard Storyboard="{StaticResource AdvMarquee}"/>
            </EventTrigger>
        </Style.Triggers>
    </Style>

我尝试使用Storyboard上的Completed Event来计算Storyboard动画执行的次数。

在此之前,我尝试在Storyboard上添加RepeatBehavior =“ Forever”,但它会永远循环,并且不会运行完成的事件。

现在,当我删除RepeatBehavior =“ Forever”时,它完成了进度,开始计数,但不再运行。

我该如何解决这个问题?

仍然不知道,因为我真的很喜欢使用xaml wpfform。

我的Storyboard_Completed就是这样。

    <Canvas x:Name="Advertise" Background="{x:Null}" Margin="10,0,0,0" >
        <StackPanel Style="{StaticResource AnimationImageStyle}">
            <Button Click="Advertise_Click" Style="{StaticResource AdvertisementBtnStyle}">
                <TextBlock Name="AdvText" Text="This is Animated Text" Padding="10, 0, 10, 0"/>
            </Button>
        </StackPanel>
    </Canvas>

1 个答案:

答案 0 :(得分:2)

为最后一个动画放置CurrentStateInvalidated的事件处理程序,您将有可能获得当前的迭代:

<DoubleAnimation Storyboard.TargetProperty="(Canvas.Top)" From="0"      To="25"     BeginTime="0:00:03" Duration="0:00:01" CurrentStateInvalidated="DoubleAnimation_CurrentStateInvalidated"/>

int cnt=0;    
private void DoubleAnimation_CurrentStateInvalidated(object sender, EventArgs e)
{
    var ac = sender as AnimationClock;
    cnt = (ac.Parent as ClockGroup).CurrentIteration;
}

Storyboard_Completed,您将不需要。