背景:我正在使用眼动追踪创建应用程序。为了防止按钮在短时间内无意中被激活,我希望在用户的按钮登陆按钮和激活按钮之间引入延迟。
我创建了一个动画,从左到右为按钮着色,为用户提供视觉反馈,如下面的数字' 6' (忽略红点,它们是跟踪未能正常显示的标记)。如果用户在超时之前向外看,则该按钮不会被激活;如果他们的注视在超时结束时仍然在按钮上,则按钮被激活。
没有发布图片的声誉;它位于http://i.stack.imgur.com/fu3j7.jpg。
当我使用动画向用户提供视觉反馈时,从动画完成中触发按钮激活似乎是明智的。
动画按如下方式触发:
<Style.Triggers>
<Trigger Property="**attached property providing gaze notification**" Value="True">
<Trigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource AnimateButton}" />
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
**storyboard to return button to normal**
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
故事板在Window的资源中定义,并指定了Completed事件处理程序。在处理程序中,我正在打印Debug.WriteLine(((AnimationClock)sender).CurrentTime);
。无论用户是否立即远离按钮,或者保持足够长的时间(当前为0.5秒)以激活按钮,打印的值为00:00:00.5000000
。查看时钟实例的其他字段也不会给出任何提示。
所以,在所有的阐述之后,问题是:是否有一种方法可以确定动画是否完全自动完成,或者是否被Trigger.ExitActions
启动的故事板中断了/ em>的
我的另一种方法是挂钩附加属性,提供更改凝视通知,启动计时器与动画相同的时间长度,然后检查按钮在此之后是否仍然有凝视,但我更喜欢动画 - 驱动方法是否可行。
谢谢。