通过代码WPF完全执行翻转动画

时间:2010-02-09 14:48:29

标签: wpf animation transform transformation storyboard

我尝试将翻转动画添加到我构建的用户控件中。用户控件很简单,前后有87x87图像和一些属性。我想在我正在努力的游戏中代表一个牌。我试图动画用户从牌组中挑选牌的翻转效果。我觉得我需要通过代码而不是xaml这样做有两个原因:1。在翻转图块后旋转图块(当前正在工作)后还有另一个变换.2。翻转图块后,我想取消该事件。

我得到的问题只是方法退出后运行的最后一个动画。 我想我需要一个故事板,但我看到的所有例子都以两种方式使我困惑:

如何更改图像中间板,以及如何设置targetProperty 我一直在处理这两个博客。

http://www.codeguru.com/csharp/csharp/cs_misc/userinterface/article.php/c12221 http://blogs.msdn.com/tess/archive/2009/03/16/silverlight-wpf-flipimage-animation.aspx

    public void FlipFront()
    {
            DoubleAnimation flipfront = new DoubleAnimation(0, 90, new Duration(new     TimeSpan(0, 0, 1)));
        SkewTransform skew = new SkewTransform();
        this.RenderTransform = skew;
        skew.BeginAnimation(SkewTransform.AngleYProperty, flipfront);         


    }

    public void FlipBack()
    {

        ImageSourceConverter source = new ImageSourceConverter();
        this.ImageFace.Source = new BitmapImage(new Uri("Back.jpg", UriKind.Relative));

        DoubleAnimation flipfront = new DoubleAnimation(90, 0, new Duration(new TimeSpan(0, 0, 1)));
        SkewTransform skew = new SkewTransform();
        this.RenderTransform = skew;
        skew.BeginAnimation(SkewTransform.AngleYProperty, flipfront); 
    }

    public void Flip()
    {
        FlipFront();
        FlipBack();
    }

我打破了两种不同的方法,因为我会帮助解决我遇到的问题。

1 个答案:

答案 0 :(得分:1)

哇,这还没有在很长的时间内更新......以防万一有人跟踪这个:

问题是你不是在等待“翻转前”动画完成之后立即开始“翻转” - 现在因为你基本上将Y角度动画强制跳跃到90度,这就是为什么它看起来它没有正常射击。

有很多方法可以解决这个问题 - 首先要想到的是DoubleAnimation s上有一个名为CreateClock的方法,它会让你回归{ {1}}对象。该对象上有一个AnimationClock事件,它将告诉您该动画何时“完成”。附上一个处理程序(记住你要分离它以免泄漏内存),并在那里调用你的“开始翻转”方法。我把一些非常低效的东西放在一起,但它会显示原则:

Completed
相关问题