Java 更新计时器主线程上的间隔
好的,我需要知道是否有更有效的方法来解决这个问题 我正在使用AndEngine以一种方法将精灵放置在场景中 现在在整个游戏中,我更新了精灵产卵的间隔时间 我更新代码中的间隔 例如,我有一个计时器,它以一定的间隔添加精灵,我可以更改间隔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;
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秒,真正地完成游戏的顺序。