我正在開發一個使用Canvas/Surfaceview
的2D遊戲,並且存在線程問題。 所以我想要完成的是背景中的一些東西,例如: 每秒SpawnEnemy()
或打勾秒或攻擊。Android開發:遊戲後臺循環
我試過Thread.wait,但那只是造成痛苦,讓我的遊戲2fps。
這裏是我的gameLoop:
import android.graphics.Canvas;
public class GameLoopThread extends Thread {
static final long FPS = 20;
private GameView view;
private boolean running = false;
public GameLoopThread(GameView view) {
this.view = view;
}
public void setRunning(boolean run) {
running = run;
}
@Override
public void run() {
long ticksPS = 1000/FPS;
long startTime;
long sleepTime;
while (running) {
Canvas c = null;
startTime = System.currentTimeMillis();
try {
c = view.getHolder().lockCanvas();
synchronized (view.getHolder()) {
view.onDraw(c);
}
} finally {
if (c != null) {
view.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS - (System.currentTimeMillis() - startTime);
try {
if (sleepTime > 0)
sleep(sleepTime);
else
sleep(10);
} catch (Exception e) {}
}
}
}
所以我想這是在後臺(秒)滴答作響的東西,不thread.wait。