【问题标题】:Android, issue in Speed control of RenderView for a gameAndroid,游戏的 RenderView 速度控制问题
【发布时间】:2012-10-02 17:33:34
【问题描述】:

我使用这个类来更新渲染视图

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; 太快。

我该如何解决这个问题?为什么速度变化不是渐进的?

【问题讨论】:

    标签: android render


    【解决方案1】:

    这不是逐渐变化的,因为1000000000.0f 大约是100000009.9f 的十倍。如果您想加快速度(比如 10%),请尝试类似900000000 的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      相关资源
      最近更新 更多