나는 안드로이드 용 미니 게임을하고있다. 이 코드를 게임 루프에 사용하고 있습니다.android game loop sleep
private RefreshHandler mRedrawHandler = new RefreshHandler();
class RefreshHandler extends Handler {
@Override
public void handleMessage(Message msg) {
Panel.this.update();
Panel.this.invalidate();
}
public void sleep(long delayMillis) {
this.removeMessages(101);
sendMessageDelayed(obtainMessage(101), delayMillis);
}
};
public void update() {
if (mMode == RUNNING) {
ball.update(NR_PIX);
for (int i=0; i<N; i++) {
bords[i].update(NR_PIX);
}
Panel.lastBordHeight -= NR_PIX;
if (mYBrickOffset == 0)
mYBrickOffset = mYBrick;
mYBrickOffset -= NR_PIX;
mRedrawHandler.sleep(mMoveDelay);
}
}
RefreshHandler 클래스는 SnakeView 클래스 예제입니다.
코드가 정상적으로 작동합니다. 나는 새로운 게임 버튼을위한 활동을 가지고있다. 처음 활동에 들어가면 효과가 있습니다. 그러나 게임을 종료하고 속도를 다시 입력하면 속도가 빨라집니다. 실 거하지 못하거나 이해하지 못하는 것입니다. 게임을 종료하고 새 게임 버튼을 사용하여 다시 입력하면 속도가 훨씬 빨라집니다.
아무도 도와 줄 수 있습니까?
감사합니다. 나는 그들을 들여다 볼 것이다. onPause를 무시하고 postDelay를 사용하여 문제를 해결할 수 있습니다. 여기에 새로운 RefreshHandler 클래스가 있습니다. –