2013-12-11 2 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(); 
} 

Впервые он работает, со второго раза я вижу только конечный результат без анимации ... Может ли кто-нибудь помочь мне PLZ?

Спасибо ...

+0

Попробуйте определить свойство From или, возможно, AutoReverse на SB. – atomaras

+0

Нет :(Возможно, мне нужно понять, как программно запускать раскадровку – Ciccio

ответ

0

Вы установить его в состояние, и это пребывание в этом состоянии. Вместо этого просто используйте свою раскадровку и просто запускайте ее вместо того, чтобы иметь ее в несуществующей 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> 

Надеюсь, это поможет.

Смежные вопросы