当前位置:  开发笔记 > 人工智能 > 正文

WPF:动画完成后返回方法

如何解决《WPF:动画完成后返回方法》经验,为你挑选了1个好方法。

参考我目前正在构建的这个编程游戏.

我有一个类库(DLL)将有一个方法Run,将由以下内容组成:

public class MyRobot : Robot 
{
    public void Run(} 
    {
        while (true) 
        {
           Ahead(200); //moves the bot 200pixels
           TurnLeft(90); //turns the bot by 90deg 
        }
    }
}

在那些方法(继承自Robot)中,系统将使用WPF(使用BeginAnimationDispatcherTimer)来为机器人设置动画.

现在,问题是我没有在完成当前方法之前返回(即,转到下一个方法)的方法,因为这将导致动画一起发生,并且在无限循环中(如一个以上),这尤其不好.


我的问题是,在完成动画之前阻止方法返回的最佳方法什么

我当前boolRobotclass(isActionRunning)中有一个标记为true动作开始运行时,然后更改为false动画回调(Completed如果使用则使用该事件BeginAnimation).

在每个方法结束时(在调用之后BeginAnimation),我放置了以下循环:

while (isActionRunning) 
{
    Thread.Sleep(200); //so that the thread sleeps for 200ms and then checks again if the animation is still running 
}

这样在动画完成之前该方法不会返回.

但我觉得这不是正确的方法.

任何人都可以指导我做到最好吗?



1> Eric Lippert..:

从锁中建立信号装置是疯狂的; 只需使用框架中已存在的信号设备.

http://msdn.microsoft.com/en-us/library/system.threading.autoresetevent.aspx

那就是:线程一说"嘿线程二,开始这个动画,并在你完成时用这个等待句柄发信号." 线程一等待等待句柄.线程2启动动画,并在其完成事件中,向waithandle发出信号.线程一然后再次醒来并说"嘿线程二,开始这个其他动画......"

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有