Windows Phone动画在停止时返回帧

时间:2014-04-18 18:10:13

标签: c# silverlight windows-phone-7

我有一个迷你游戏作为我正在为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(); 

0 个答案:

没有答案