Android 如何在一个游戏循环中处理不同的视图?
我正在用android做一个游戏,我有两个类扩展了SurfaceView(TitleView和GameView)。我也有一个GameLoopThread,我在标题视图中初始化它,它在这个视图中绘制我的所有位图,但它只在这个视图中工作。因此,当我想切换到GameView时,我只是在标题视图中初始化GameLoopThread,而不是在GameView中初始化GameLoopThread,最后一个是黑屏,因为上面没有绘制任何内容 有人能帮我吗 这是我的GameLoopThread类:Android 如何在一个游戏循环中处理不同的视图?,android,multithreading,android-activity,view,surfaceview,Android,Multithreading,Android Activity,View,Surfaceview,我正在用android做一个游戏,我有两个类扩展了SurfaceView(TitleView和GameView)。我也有一个GameLoopThread,我在标题视图中初始化它,它在这个视图中绘制我的所有位图,但它只在这个视图中工作。因此,当我想切换到GameView时,我只是在标题视图中初始化GameLoopThread,而不是在GameView中初始化GameLoopThread,最后一个是黑屏,因为上面没有绘制任何内容 有人能帮我吗 这是我的GameLoopThread类: @Suppre
@SuppressLint("WrongCall")
public class GameLoopThread extends Thread {
static final long FPS = 25;
//private GameView view;
private TitleView tview;
private boolean running = false;
public GameLoopThread(TitleView titleView) {
this.tview = titleView;
}
public void setRunning(Boolean run) {
running = run;
}
@Override
public void run() {
long ticksPS = 1000 / FPS;
long startTime;
long sleepTime;
while (running) {
Canvas c = null;
startTime = System.currentTimeMillis();
try {
c = tview.getHolder().lockCanvas();
synchronized (tview.getHolder()) {
tview.onDraw(c);
}
} finally {
if (c != null) {
tview.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS - (System.currentTimeMillis() - startTime);
try {
if (sleepTime > 0) {
sleep(sleepTime);
} else {
sleep(25);
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
@Sergio,我有一个应用程序正在做类似的事情,视频视图,然后图片视图,但我有不同的活动类,主要活动是视频视图,然后当视频完成后,它开始图片活动。如果这就是你想要做的 通过调用sartActivity启动标题视图 私有静态最终标题\活动\请求\代码=1
Intent titleIntent = new Intent(GameViewActivity.this, TitleViewActivity.class);
startActivityForResult(imageIntent, TITLE_ACTIVITY_REQUEST_CODE);
标题活动完成后,从互动程序活动中调用以下命令,这将终止标题活动并重新启动游戏视图
setResult(Activity.RESULT_OK, intent);
finish();
在游戏活动视图中,使用此方法接收标题视图已完成的通知
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == TITLE_ACTIVITY_REQUEST_CODE) //* notification from titleview
{
switch (resultCode)
{
case Activity.RESULT_OK:
//* do something,
break;
此代码非常适合我的应用程序,如果您有任何其他问题,请告诉我