Я основывал свою игру прочь лунной демонстрации высаживающегося на берег, хотя в большой степени изменено, и я могу двигаться 40-50fps, но проблема - она, колеблется между 40-50fps так, что она заставляет движущуюся графику дрожать! Ее очень раздражающее и заставляет мою игру выглядеть действительно поганой когда на самом деле его выполнение в хорошей частоте кадров.
Я пытался установить приоритет потока выше, но это просто сделало его хуже... теперь он будет колебаться между 40-60fps...
Я думал об ограничении кадр/с приблизительно к 30 так, чтобы это было постоянно. Действительно ли это - хорошая идея, и у кого-либо еще есть опыт или другое решение?
Спасибо!
Это - мой цикл выполнения
@Override
public void run() {
while (mRun) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
if(mMode == STATE_RUNNING){
updatePhysics();
}
doDraw(c);
}
} finally {
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
private void updatePhysics() {
now = android.os.SystemClock.uptimeMillis();
elapsed = (now - mLastTime) / 1000.0;
posistionY += elapsed * speed;
mLastTime = now;
}