我想对一个对象进行旋转。...问题是动画是第一次工作!每当我点击对象时,它都应该起作用。
这里的代码:
<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();
}
第一次使用时,从第二次开始,我只看到没有动画的最终结果...有人可以帮助我吗?
谢谢...
您正在将其设置为一种状态,并且一直处于该状态。取而代之的只是拥有您的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>
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句