小编Vla*_*tin的帖子

在画布上绘图太慢,我如何达到恒定的 30 fps 或更高?(安卓)

我正在尝试为 Android 创建一个 2d 游戏,目前我正在努力实现大约 30 fps 的恒定 fps(我认为 30 对手机游戏来说已经足够了)。我正在使用 SurfaceView 和一个非常直接的游戏循环:

 while (isOk==true)
    {
        if (!holder.getSurface().isValid()) continue;

        c = holder.lockCanvas();

        update();
        draw(c);
        holder.unlockCanvasAndPost(c);

        t2= System.currentTimeMillis();
        all++;
        if ( mspf /* miliseconds per frame, and it's set to 1000/30 */ -(t2-t1)  > 0 )
        {
            try {
                t.sleep(mspf-(t2-t1));
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else
                Log.w("Super",String.valueOf(mspf-(t2-t1))+ " o " + String.valueOf(++total)+ "out of " +String.valueOf(all));

        t1=Math.max( t1+mspf, t2);
    }
Run Code Online (Sandbox Code Playgroud)

这是游戏循环。正如您可能已经注意到的,我使用 Log.w 来查看我有多少帧剩余时间可以用于 …

java android frame-rate surfaceview

3
推荐指数
1
解决办法
5932
查看次数

标签 统计

android ×1

frame-rate ×1

java ×1

surfaceview ×1