Java 如何在LibGDX中暂停计时器延迟秒

Java 如何在LibGDX中暂停计时器延迟秒,java,android,libgdx,Java,Android,Libgdx,我做这个代码 Timer.schedule(new Task(){ @Override public void run() { flyAway(); } }, 12); 当我的游戏暂停时,我用画法(演员) 在恢复游戏时,我会这样做: Timer.instance().start(); 它可以工作,但当我暂停2秒并在35秒后恢复时,函数flyAway()立即执行,不包括剩余的10秒 我怎么能在几秒

我做这个代码

Timer.schedule(new Task(){
        @Override
        public void run() {             
            flyAway();
        }
}, 12);
当我的游戏暂停时,我用画法(演员)

在恢复游戏时,我会这样做:

Timer.instance().start();
它可以工作,但当我暂停2秒并在35秒后恢复时,函数flyAway()立即执行,不包括剩余的10秒

我怎么能在几秒钟内完成。谢谢

对不起,我的英语不好

FlyAvay码

//Муха улетает
public void flyAway(){
    flyAway = 1;

    targetFlyX = Gdx.graphics.getWidth() / 2;
    targetFlyY = Gdx.graphics.getHeight() + 300;
    this.setColor(1f, 1f, 1f, 0.2f);
    this.addAction(sequence(moveTo(targetFlyX, targetFlyY, flySpeed), desctroyFlyAction));      
}

Action desctroyFlyAction = new Action(){
    public boolean act( float delta ) {
        removeFly();
        return true;
    }
};

public void removeFly(){
    rectBounds.set(1, 1, 0, 0);
    this.remove();
}

我有这个问题,我知道这已经晚了,但也许它会帮助其他人。问题是,当创建
计时器时,系统时钟会给它一个执行时间,而不是给它指定的执行时间。因此,当您在
pause
方法中调用
Timer.stop
时,请等待35秒,然后在
resume
方法中调用
Timer.start
,任务本应完成的时间已经过去,因此立即执行

我的解决方案就是在
暂停时保存当前系统的时间,然后从
恢复时的当前时间中减去它,然后在再次调用
计时器.start()
之前,使用
计时器.delay()
将差值作为延迟添加到
计时器中

public void pause() {
    timerDelay = TimeUtils.nanosToMillis(TimeUtils.nanoTime());
    Timer.stop();
}

public void resume() {
    Timer.delay(TimeUtils.nanosToMillis(TimeUtils.nanoTime()) - timerDelay);
    Timer.start();
}

我有这个问题,我知道这已经晚了,但也许它会帮助其他人。问题是,当创建
计时器时,系统时钟会给它一个执行时间,而不是给它指定的执行时间。因此,当您在
pause
方法中调用
Timer.stop
时,请等待35秒,然后在
resume
方法中调用
Timer.start
,任务本应完成的时间已经过去,因此立即执行

我的解决方案就是在
暂停时保存当前系统的时间,然后从
恢复时的当前时间中减去它,然后在再次调用
计时器.start()
之前,使用
计时器.delay()
将差值作为延迟添加到
计时器中

public void pause() {
    timerDelay = TimeUtils.nanosToMillis(TimeUtils.nanoTime());
    Timer.stop();
}

public void resume() {
    Timer.delay(TimeUtils.nanosToMillis(TimeUtils.nanoTime()) - timerDelay);
    Timer.start();
}

我有这个问题,我知道这已经晚了,但也许它会帮助其他人。问题是,当创建
计时器时,系统时钟会给它一个执行时间,而不是给它指定的执行时间。因此,当您在
pause
方法中调用
Timer.stop
时,请等待35秒,然后在
resume
方法中调用
Timer.start
,任务本应完成的时间已经过去,因此立即执行

我的解决方案就是在
暂停时保存当前系统的时间,然后从
恢复时的当前时间中减去它,然后在再次调用
计时器.start()
之前,使用
计时器.delay()
将差值作为延迟添加到
计时器中

public void pause() {
    timerDelay = TimeUtils.nanosToMillis(TimeUtils.nanoTime());
    Timer.stop();
}

public void resume() {
    Timer.delay(TimeUtils.nanosToMillis(TimeUtils.nanoTime()) - timerDelay);
    Timer.start();
}

我有这个问题,我知道这已经晚了,但也许它会帮助其他人。问题是,当创建
计时器时,系统时钟会给它一个执行时间,而不是给它指定的执行时间。因此,当您在
pause
方法中调用
Timer.stop
时,请等待35秒,然后在
resume
方法中调用
Timer.start
,任务本应完成的时间已经过去,因此立即执行

我的解决方案就是在
暂停时保存当前系统的时间,然后从
恢复时的当前时间中减去它,然后在再次调用
计时器.start()
之前,使用
计时器.delay()
将差值作为延迟添加到
计时器中

public void pause() {
    timerDelay = TimeUtils.nanosToMillis(TimeUtils.nanoTime());
    Timer.stop();
}

public void resume() {
    Timer.delay(TimeUtils.nanosToMillis(TimeUtils.nanoTime()) - timerDelay);
    Timer.start();
}

与我们共享您的flyAway()代码。代码在我看来很好。请在
stop()
start()
时尝试打印任务的
getExecuteMemillis()
(请参阅)(在任务运行前应显示毫秒)。与我们共享您的flyAway()代码。我觉得代码不错。请在
stop()
start()
时尝试打印任务的
getExecuteMemillis()
(请参阅)(在任务运行前应显示毫秒)。与我们共享您的flyAway()代码。我觉得代码不错。请在
stop()
start()
时尝试打印任务的
getExecuteMemillis()
(请参阅)(在任务运行前应显示毫秒)。与我们共享您的flyAway()代码。我觉得代码不错。尝试打印任务的
getExecuteTimeMillis()
(请参阅)当您
stop()
start()
(它应该显示在任务运行之前的毫秒)。我遇到了这个问题,您的建议(调用timer.delay)非常有效,谢谢@KnowNothing!现在我相信,从libgdx 1.9.8开始,它的Timer.instance()延迟(long)就已经在使用了。我有一个确切的问题,你的建议(调用Timer.delay)非常有效,谢谢@KnowNothing!现在我相信,从libgdx 1.9.8开始,它的Timer.instance()延迟(long)就已经在使用了。我有一个确切的问题,你的建议(调用Timer.delay)非常有效,谢谢@KnowNothing!现在我相信,从libgdx 1.9.8开始,它的Timer.instance()延迟(long)就已经在使用了。我有一个确切的问题,你的建议(调用Timer.delay)非常有效,谢谢@KnowNothing!我现在相信,从libgdx1.9.8开始,它的Timer.instance().delay(long)正在使用中