2013-12-11 87 views
0

我想旋转一个物体....问题在于动画只是第一次工作!它应该工作我每次挖掘对象...动画只是第一次作品

下面的代码:

<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(); 
} 

第一次工作,从第二次我看到没有动画的最终结果... 任何人都可以帮我吗?

谢谢...

+0

尝试在SB上定义From属性或AutoReverse。 – atomaras

+0

否:(也许我需要了解如何以编程方式运行故事板 – Ciccio

回答

0

你将其设置为一个状态,它停留在该状态。取而代之的是拥有你的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> 

希望这会有所帮助。