gpt4 book ai didi

c# - WP7 - 动画结束得太早,没有效果

转载 作者:太空宇宙 更新时间:2023-11-03 11:32:48 25 4
gpt4 key购买 nike

我制作了一个动画来旋转我的控件,但是当它被触发时,它只是跳到最终位置,然后立即返回到起始位置。

控件由隐藏代码组成,是具有以下属性的文本框:

FontSize = 45;
TextAlignment = TextAlignment.Center;
Widh = 40;
Heigh = 45;

我将文本框存储在数组中,因此我使用以下代码触发动画:

foreach (TextBlock b in arrayOfTextBoxes)
{
Rotate(b);
}

动画:

public static void Rotate(UIElement target)
{
var projection = new PlaneProjection();
target.Projection = projection;

DoubleAnimation da = new DoubleAnimation();
da.From = 0;
da.To = 90;
da.Duration = TimeSpan.FromSeconds(0.25);
da.AutoReverse = false;

Storyboard.SetTargetProperty(da, new PropertyPath(PlaneProjection.RotationZProperty));
Storyboard.SetTarget(da, projection);

Storyboard sb = new Storyboard();
sb.Children.Add(da);

EventHandler eh = null;
eh = (s, args) =>
{
projection.RotationZ = 90;
sb.Stop();
sb.Completed -= eh;
};
sb.Completed += eh;

sb.Begin();
}

编辑:现在我大概知道问题出在哪里了。我有一个(有时是两个)Dispatcher Times 每秒在后台滴答作响。当我禁用它们时,问题就消失了。但我做不到,因为我需要他们来衡量时间。在我触发动画之前停止它们并再次启动它们并没有帮助。//DispetcherTimers 这样做:

        void tikac_Tick(object sender, EventArgs e)
{
herniCas += new TimeSpan(0, 0, 1);
}

<罢工>

最佳答案

动画 Storyboard通常会保留最后一个值“直到它们停止”。它们不会永久改变实际属性(property)值(value)。他们只是更改其当前呈现的值(依赖属性不是很棒吗?:))

当它结束时你明确地停止它,值恢复到它的原始值。如果您希望值保持更改,请不要停止 Storyboard ,或者在动画更改时在代码中明确设置它。

您的示例中的动画速度非常快,很快就结束了( Storyboard的启动时间可以是几帧,中间的任何时间都会被跳过,因为动画是固定时间插值,而不是特定于帧的)。

关于c# - WP7 - 动画结束得太早,没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7221820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com