我尝试将翻转动画添加到我构建的用户控件中 . 用户控件很简单,前后有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 回答
哇,这还没有在一个很长的时间内更新...以防万一有人跟踪这个:
问题是你不是在等待“翻转前”动画完成之后立即开始“翻转” - 现在因为你基本上将Y角度动画强制跳跃到90度,这就是为什么它看起来像是不正常射击 .
有很多方法可以解决这个问题 - 首先想到的是
DoubleAnimation
在它们上面有一个名为CreateClock
的方法,它会返回一个AnimationClock
对象 . 该对象上有一个Completed
事件,它将告诉您该动画何时为"done" . 附上一个处理程序(记住你已经抛出了非常低效的东西,但它会显示原理: