我正在使用 LunarLander API 演示为 Android 开发 RPG。我已经使用这个演示制作了一个游戏(Porcupine Assassin,看看!)所以我很好地掌握了 Canvas 类和那种性质的东西。
我的问题是,在 RPG 中,您需要一种访问库存、统计数据等的方法。所以我设置了 BACK 按钮来启动类 Inventory.java。当我完成()库存活动并尝试返回游戏(SurfaceView)时,我遇到了问题。
这是 SurfaceCreated() 回调:
public void surfaceCreated(SurfaceHolder holder) {
thread.setRunning(true);
thread.start();
}
我得到了一个由“IllegalThreadStateException:线程已经启动”引起的 FC,所以我在 SurfaceCreated() 回调中放置了一个 try/catch。使用 try/catch,没有发生 FC,但我返回黑屏。
我尝试取出 try/catch 并在开头添加一个检查:if(!thread.isAlive())。这样,如果线程已经启动,它就不会做任何事情。奇怪的是,我得到了相同的 FC“线程已经启动”,所以 thread.isAlive() 必须返回 false .. ??
我也有来自 API 的 onWindowFocusChanged() 方法:
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
if (!hasWindowFocus) thread.pause();
else thread.setState(STATE_RUNNING);
}
我非常热衷于游戏方面,我已经为我的 RPG 奠定了大部分基础。但我脑子里全是这些 Android/Java 的东西。谁能指出我正确的方向?