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