我正在尝试创建一个基于 2D 游戏框架的简单游戏,如 Mario Zechner 的 2011 Apress 书籍“开始 Android 游戏”中所述。也许这有帮助,也许没有,但不管怎样:
整场比赛我只有一项活动。一切都渲染到位图上,然后发送到 SurfaceView,发送到 SurfaceView 的内容将根据游戏所在的屏幕而改变。
我想实现一个简单的高分系统,让用户在主菜单屏幕上的 EditView 中输入他们的名字。我已经能够将 SurfaceView 和 EditView 与 RelativeLayout 结合起来,但问题是一旦用户移过主菜单屏幕就摆脱了 EditView。
这门课还有更多内容,但这里有一个我认为重要的片段:
public abstract class AndroidGame extends Activity implements Game{
public EditText et;
public RelativeLayout rl;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
et = new EditText(this);
renderView = new AndroidFastRenderView(this, frameBuffer);
rl = new RelativeLayout(this);
rl.addView(renderView);
rl.addView(et);
setContentView(rl);
}
}
以上是游戏的唯一活动。AndroidFastRenderView 类扩展了 SurfaceView。我遇到的问题是,虽然我需要 SurfaceView 在整个游戏中持续存在,但我需要 EditText 只持续一小段时间,然后根据触摸事件消失。
我尝试从我的 MainMenuScreen 类中调用 RelativeLayout.removeView(et),它负责构造发送到 SurfaceView 的位图以及监听触摸事件。但是我得到一个未捕获的异常,说我无法编辑在另一个线程中定义的视图。
我很抱歉这本小说,但我已经尝试自己解决这个问题好几个小时了,但没有运气。我觉得这是一件非常简单的事情,我只是没有得到。任何帮助深表感谢!