【问题标题】:Repeat animation freeze when left mouse button click and hold鼠标左键单击并按住时重复动画冻结
【发布时间】:2014-03-06 20:35:08
【问题描述】:

我之前制作了许多不同的故事板,但由于某种原因,这是我第一次真正注意到视觉错误,如果我没有上级抱怨的话,我不会注意到。

首先我在Label 上创建了一个简单的发光效果,在Loaded 事件上启动并没有复杂的永远运行

<Label Name="lblFullName" Margin="-10,0,0,0" Foreground="Green" FontWeight="DemiBold" FontSize="14">
    <Label.Effect>
        <DropShadowEffect x:Name="myDropEffect" BlurRadius="6" ShadowDepth="0" Color="GreenYellow"  Opacity="0" />
    </Label.Effect>
    <Label.Triggers>
        <EventTrigger RoutedEvent="Loaded">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="myDropEffect"
                                     Storyboard.TargetProperty="Opacity"
                                     From="0" To="0.8" Duration="0:0:0.5"  
                                     AutoReverse="True"  RepeatBehavior="Forever"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Label.Triggers>
</Label>

如果我单击窗口上的按钮但不放开动画继续播放。我尝试了不同的行为,我可以尝试,无论动画继续进行。但是有人发现,当您单击窗口右上角的窗口关闭按钮但按住鼠标时,Forever 的每个动画或当前仍在迭代的动画(例如 15 秒动画仍在动画中)都会冻结,如果您在释放它之前将鼠标移到关闭按钮之外,然后释放它所有的动画永远从随机点重新启动动画,而不是它们在冻结之前的位置。

我创建了一个空项目,我也得到了这种行为。所以在安装了应用程序的机器上和在开发机器上相同的行为,所以我很困惑。有人注意到这一点吗?有人找到解决办法吗?

【问题讨论】:

    标签: c# wpf c#-4.0 .net-4.0 storyboard


    【解决方案1】:

    当您使用 CompositionTarget.Rendering 制作动画时也会发生这种情况。

    您看到的是标准的 Windows 行为。发生的情况是,当您按住关闭按钮时,windows 会阻止窗口上的所有绘图操作。您的动画并没有真正停止,它们只是没有反映在窗口上。当您释放按钮时,元素的绘制方式与您没有冻结窗口时的状态完全相同。

    您也可以使用浏览器测试此功能。如果您按住关闭按钮in this page,您将看到滚动冻结,然后在稍后恢复。所以告诉你,除非他们认识微软的人,否则这就是 Windows。不知道其他操作系统是不是也这样。

    也许有人可以解释为什么 Windows 会这样工作,但我想这是有充分理由的。

    【讨论】:

    • 我确实开始认为刷新只是暂停,但一切都按预期进行。就像你描述的方式一样,我应该告诉他们问题是什么:)。但我很想知道是否有人可以解释为什么会这样。
    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 2011-09-20
    • 1970-01-01
    • 2015-04-23
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多