我有一个迷你游戏作为我正在为Windows手机编写的大型游戏的一部分,它使用故事板动画沿着条形图来回移动箭头,用户试图将其停在中心位置。 / p>
我遇到的问题是当我停止动画时,你可以看到动画的箭头向后移动一帧。
我尝试了很多东西:
使用关键帧进行动画制作而不使用 通过canvas.left或translate.X进行动画制作 暂停/停止动画后,手动将canvas.left设置为箭头的getcanvas
最后一个选项不起作用,我想知道动画实际上是在实际设置X / Canvas.Left之前是否正在绘制一个帧,并且反弹位置是真实的
这是我的动画代码:
double speed = .75;
miniGameStoryboard.Stop();
miniGameStoryboard.Children.Clear();
// setup
var _Translate = new TranslateTransform();
this.MiniGame1Arrow.RenderTransform = _Translate;
// translate (location X)
DoubleAnimationUsingKeyFrames _TranslateAnimateX = new DoubleAnimationUsingKeyFrames();
System.Windows.Media.Animation.Storyboard.SetTarget(_TranslateAnimateX, _Translate);
System.Windows.Media.Animation.Storyboard.SetTargetProperty(_TranslateAnimateX, new PropertyPath(TranslateTransform.XProperty));
_TranslateAnimateX.KeyFrames.Add(new LinearDoubleKeyFrame
{
KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0)),
Value = 0
});
_TranslateAnimateX.KeyFrames.Add(new LinearDoubleKeyFrame
{
KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(speed)),
Value = 660
});
_TranslateAnimateX.AutoReverse = true;
_TranslateAnimateX.RepeatBehavior = RepeatBehavior.Forever;
_TranslateAnimateX.FillBehavior = FillBehavior.HoldEnd;
miniGameStoryboard.Children.Add(_TranslateAnimateX);
miniGameStoryboard.Begin();