【问题标题】:libGDX : freezing my game when I call server hostlibGDX:当我调用服务器主机时冻结我的游戏
【发布时间】:2017-04-24 02:14:49
【问题描述】:

我想像其他游戏一样创建每日奖金,所以我从Apache 调用commons-net-3.6 库以从互联网上获取当前时间。然后我写了这段代码:

NTPUDPClient timeClient = new NTPUDPClient();
String TIME_SERVER = "time-a.nist.gov";
InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
TimeInfo timeInfo = timeClient.getTime(inetAddress);
long returnTime = timeInfo.getMessage().getTransmitTimeStamp().getTime();
Date time = new Date(returnTime);
System.out.println(time);

但是,有时可以正常工作,有时不能正常工作并冻结我的游戏(没有响应),为什么??

对不起,我的英语不好。

【问题讨论】:

    标签: java libgdx apache-commons-net


    【解决方案1】:

    您是在单独的线程上调用此代码吗?

    这不能在 libgdx 渲染线程上完成,该线程必须在一秒钟内至少调用 60 次。向服务器发出请求非常耗时,并且会阻塞线程直到完成。如果请求不是异步的,则必须在单独的线程上运行它。

    最简单的方法(但不是最好的)是做这样的事情

    new Thread() {
        public void run(){
           //Here you need to do the request
        }
    }.start();
    

    您可以在此处找到更多信息 https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html

    【讨论】:

      猜你喜欢
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 2017-10-02
      • 2010-10-24
      • 2014-04-17
      相关资源
      最近更新 更多