Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新计时器主线程上的间隔_Java_Android_Andengine - Fatal编程技术网

Java 更新计时器主线程上的间隔

Java 更新计时器主线程上的间隔,java,android,andengine,Java,Android,Andengine,好的,我需要知道是否有更有效的方法来解决这个问题 我正在使用AndEngine以一种方法将精灵放置在场景中 现在在整个游戏中,我更新了精灵产卵的间隔时间 我更新代码中的间隔 例如,我有一个计时器,它以一定的间隔添加精灵,我可以更改间隔 private void speed(int f, int g, int h){ this.nextSprite1Time = f; this.nextSprite2Time = g; this.nextSprite3Time = h;

好的,我需要知道是否有更有效的方法来解决这个问题

我正在使用AndEngine以一种方法将精灵放置在场景中

现在在整个游戏中,我更新了精灵产卵的间隔时间

我更新代码中的间隔

例如,我有一个计时器,它以一定的间隔添加精灵,我可以更改间隔

private void speed(int f, int g, int h){

    this.nextSprite1Time = f;
    this.nextSprite2Time = g;
    this.nextSprite3Time = h;
    Log.d("Time Changed", String.valueOf(this.nextSprite1Time+ "," + this.nextSprite2Time + ","+ this.nextSprite3Time));

     }
当运行此方法时,会出现3秒的延迟,并冻结

如何通过安全线程或其他方式避免这种情况

有什么建议吗

编辑:这是我的时间处理器

mScene.registerUpdateHandler(new TimerHandler(0.02f, true, new ITimerCallback() {
                   @Override
                   public void onTimePassed(TimerHandler pTimerHandler) {
                          addSpriteTime1 += 2; // because timer update = 0.02 seconds
                           if (addSpriteTime1 >= nextSprite1Time) {
                                  addFace();
                                  addSpriteTime1 -= nextSprite1Time;

                           }

                           addSpriteTime2 += 2;
                           if (addSpriteTime2 >= nextSprite2Time) {
                                 addFace2();
                                   addSpriteTime2 -= nextSprite2Time;
                           }

                           addSpriteTime3 += 2;
                           if (addSpriteTime3 >= nextSprite3Time) {
                                   addFace3();
                                   addSpriteTime3 -= nextSprite3Time;
                           }
                   }
           }));

@TedHopp的可能副本这是一个副本吗?谈论两件完全不同的事情?有什么不同?在这两个问题中,您都会问为什么更新这三个相同的变量后程序会停止。此外,您在这里没有提供任何人可以帮助您的信息。显然,上述函数本身并没有冻结。您的程序中正在进行其他操作,而您没有提供上下文。这些变量是如何使用的?它冻结是什么意思?是否有错误消息?有3秒的延迟直到…什么?请提供一些相关的细节,然后也许你会得到一些帮助。你传递给speed的价值观是什么?你的程序真的冻结了吗?或者它会停止调用onTimePassed吗?还是停止添加面?如果是最后一个,也许在onTimePassed中记录一些值会有帮助,看看发生了什么。它并没有停止运行persay,而是延迟或冻结了大约2秒,我想知道他们是更新时间的更好方法,因为当我使用speed方法时,它会冻结好2秒,真正地完成游戏的顺序。