0
我使用这个类来更新渲染视图的RenderView的速度控制问题的Android,在游戏
public class AndroidFastRenderView extends SurfaceView implements Runnable {
AndroidGame game;
Bitmap framebuffer;
Thread renderThread = null;
SurfaceHolder holder;
float speedRegulator= 100000009.9f;
volatile boolean running = false;
public AndroidFastRenderView(AndroidGame game, Bitmap framebuffer) {
super(game);
this.game = game;
this.framebuffer = framebuffer;
this.holder = getHolder();
}
public void resume() {
running = true;
renderThread = new Thread(this);
renderThread.start();
}
public void run() {
Rect dstRect = new Rect();
long startTime = System.nanoTime();
while(running) {
if(!holder.getSurface().isValid())
continue;
float deltaTime = (System.nanoTime()-startTime) /speedRegulator;
startTime = System.nanoTime();
game.getCurrentScreen().update(deltaTime);
game.getCurrentScreen().present(deltaTime);
Canvas canvas = holder.lockCanvas();
canvas.getClipBounds(dstRect);
canvas.drawBitmap(framebuffer, null, dstRect, null);
holder.unlockCanvasAndPost(canvas);
}
}
public void pause() {
running = false;
while(true) {
try {
renderThread.join();
break;
} catch (InterruptedException e) {
// retry
}
}
}
}
数量:
float speedRegulator= 100000009.9f;
是让我减少和增加的参数球员的速度,不幸的是,如果我设置这个浮动speedRegulator= 1000000000.0f;
是太慢了,如果离开float speedRegulator= 100000009.9f;
太快。
我该如何解决这个问题?为什么速度变化不是渐进的?
尚未尝试但遇到同样的问题 – AndreaF