【问题标题】:Animation works just first time动画作品只是第一次
【发布时间】:2013-12-11 08:50:34
【问题描述】:

我想对一个对象进行旋转....问题是动画只是第一次工作!每次我点击对象时它都应该工作......

代码如下:

<VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="VisualStateGroup">
            <VisualStateGroup.Transitions>
                <VisualTransition GeneratedDuration="0:0:5">
                    <VisualTransition.GeneratedEasingFunction>
                        <CubicEase EasingMode="EaseOut"/>
                    </VisualTransition.GeneratedEasingFunction>
                </VisualTransition>
                <VisualTransition GeneratedDuration="0:0:5" To="Gira" x:Name="VT2">
                    <VisualTransition.GeneratedEasingFunction>
                        <CubicEase EasingMode="EaseOut"/>
                    </VisualTransition.GeneratedEasingFunction>
                </VisualTransition>
                <VisualTransition From="Gira" GeneratedDuration="0:0:5" x:Name="VT1">
                    <VisualTransition.GeneratedEasingFunction>
                        <CubicEase EasingMode="EaseOut"/>
                    </VisualTransition.GeneratedEasingFunction>
                </VisualTransition>
            </VisualStateGroup.Transitions>
            <VisualState x:Name="Gira">
                <Storyboard>
                    <DoubleAnimation Duration="0" To="45" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)"
                                     Storyboard.TargetName="image" d:IsOptimized="True" RepeatBehavior="Forever" />
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>

这里是动画控件:

<Image x:Name="image" HorizontalAlignment="Center" VerticalAlignment="Center" Source="/Assets/square.png" Height="450" RenderTransformOrigin="0.5,0.5" Tap="image_Tap">
       <Image.RenderTransform>
            <CompositeTransform />
       </Image.RenderTransform>

       <i:Interaction.Triggers>
            <i:EventTrigger EventName="Tap">
                <ec:GoToStateAction x:Name="StateGiraTap" StateName="Gira"/>
            </i:EventTrigger>
       </i:Interaction.Triggers>

</Image>

这里是后面的代码:

void image_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    System.Windows.Interactivity.EventTrigger eventTrigger = System.Windows.Interactivity.Interaction.GetTriggers(image)[0] as System.Windows.Interactivity.EventTrigger;
    Microsoft.Expression.Interactivity.Core.GoToStateAction action = eventTrigger.Actions[0] as Microsoft.Expression.Interactivity.Core.GoToStateAction;

    action.UseTransitions = true;

    Gira.Storyboard.Seek(TimeSpan.Zero);
    Gira.Storyboard.Begin();
}

第一次工作,从第二次开始,我只看到没有动画的最终结果...... 谁能帮帮我?

谢谢...

【问题讨论】:

  • 尝试在 SB 上定义 From 属性或 AutoReverse。
  • 否 :( 也许我需要了解如何以编程方式运行情节提要

标签: xaml animation windows-phone-8 blend transitions


【解决方案1】:

您正在将其设置为一个状态,并且它一直处于该状态。相反,只需拥有您的 Storyboard,只需触发它,而不是让它处于失效的 VisualState 中。更像;

<Object.Resources>
  <Storyboard x:Name="Gira">
    <DoubleAnimation Duration="0" To="45" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)"
                                     Storyboard.TargetName="image" d:IsOptimized="True" RepeatBehavior="Forever" />
  </Storyboard>
</Object.Resources>

然后把它关掉。

<i:Interaction.Triggers>
            <i:EventTrigger EventName="Tap">
                <ec:ControlStoryboardAction Storyboard="{StaticResource Gira}"/>
                <!--<ec:GoToStateAction x:Name="StateGiraTap" StateName="Gira"/>-->
            </i:EventTrigger>
</i:Interaction.Triggers>

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多