gpt4 book ai didi

android - 在 android 中,我应该在什么时候将主游戏循环放在初始 Activity 类中?

转载 作者:行者123 更新时间:2023-11-29 18:17:20 24 4
gpt4 key购买 nike

我正在尝试使用 this tutorial 创建游戏循环.

我已尝试在初始 Activity 类中实现它,如下所示,但我遇到了一些问题。我已请求显示全屏和无标题功能,但我没有得到它们并且 requestRender 不起作用。

当“running”设置为 false 时,游戏循环被跳过,渲染器渲染一帧(渲染模式设置为脏)

这不是它在 running= true 时做的事情。

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;



public class Practice extends Activity {

private Input input;
private GLSurfaceRenderer glSurfaceRenderer;
private final static int maxFPS = 30;
private final static int maxFrameSkips = 5;
private final static int framePeriod = 1000 / maxFPS;
public final static String TAG = "input";

public boolean running = true;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
input = new Input(this);
setContentView(input);

long beginTime;
long timeDiff;
int sleepTime;
int framesSkipped;

sleepTime = 0;
while (running) {
Log.d(TAG, "gameRunning");
beginTime = System.currentTimeMillis();
framesSkipped = 0;
this.input.update();
this.input.requestRender();
timeDiff = System.currentTimeMillis() - beginTime;
sleepTime = (int)(framePeriod - timeDiff);

if (sleepTime > 0) {
try{
Thread.sleep(sleepTime);
}catch(InterruptedException e){}
}

while(sleepTime < 0 && framesSkipped < maxFrameSkips){
this.input.update();
sleepTime += framePeriod;
framesSkipped++;
Log.d(TAG, "Frames Skipped");
}

}
}
}

目前游戏逻辑更新正常,但渲染器根本不渲染(只是黑屏)

我很确定这只是一个简单的代码重组,但有人有什么建议吗?

最佳答案

问题的根本原因是不让 onCreate() 返回。这是应用程序运行所必需的,这是处理所有 UI 输入和更改的线程。我在这里看到很多精力不集中,请查看基本教程 UI tutorials , 了解 Android Lifecycle并注意 ANR's .它们将使您更好地了解事物的运作方式以及如何将您的 Activity 与第二个线程相结合。

关于android - 在 android 中,我应该在什么时候将主游戏循环放在初始 Activity 类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7435864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com