在run+ KeyListener中的SWT Thread.sleep

问题描述

因此,我试图通过KeyListener通过可控制的小型太空飞船制作一款小游戏。 由于SWT需要困住主线程才能更新UI,所以我想使用一个线程,我可以为敌人编程为飞船作战。

我想用Thread.sleep()建立一个计时器,以便敌人可以特定的方式移动,但是我现在的问题是当我尝试在run()甚至内部使用Thread.sleep()时离开Thread而没有Thread.sleep()会使整个UI速度显着降低。在Thread.sleep()完成之前,KeyListener似乎无法执行任何操作。

这是我现在的敌人线程代码:

display.asyncExec(new Runnable() 
        {
            public void run() 
            {
                switch(enemyrandomize())
                {
                    
                    case 0:
                        casualenemy();
                        
                        break;
                        
                    default:
                        break;
                }
            }
        });

这工作得很好,但是如果我将Thread.sleep()放在Casualenemy()方法的内部或下方,就会出现问题。

我也尝试过:

Thread operationThread = new Thread() 
        {
            public void run() 
            {
                while (true) 
                {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    
                    display.asyncExec(new Runnable() 
                    {
                        public void run() 
                        {
                            switch(enemyrandomize())
                            {
                                
                                case 0:
                                    casualenemy();
                                    
                                    break;
                                    
                                default:
                                    break;
                            }
                        }
                    });
                }
            }
        };

这在某种程度上是可行的,但是我只能在我想要的run()之外放置一个计时器。 有任何想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...