屏幕上的android游戏
我用屏幕上的android游戏,android,surfaceview,2d-games,Android,Surfaceview,2d Games,我用SurfaceView创建了这个小游戏,现在我想在屏幕上显示这个游戏。由于另一个线程正在调用SurfaceView的更新和渲染方法,我想知道如何通过XML正确地膨胀游戏并将其添加到屏幕上 PD:我的意思是我知道我可以引用这个活动,我可以这样做 public void render() { if(gameOver) { View gameOverView = LayoutInflater.from(activity).inflate(R.layout.gameover);
SurfaceView
创建了这个小游戏,现在我想在屏幕上显示这个游戏。由于另一个线程正在调用SurfaceView
的更新和渲染方法,我想知道如何通过XML正确地膨胀游戏并将其添加到屏幕上
PD:我的意思是我知道我可以引用这个活动,我可以这样做
public void render() {
if(gameOver) {
View gameOverView = LayoutInflater.from(activity).inflate(R.layout.gameover);
// code to get the layout
// and finally
layout.addView(gameOverView);
}
但问题是,activity
是在UI线程中创建的,并且辅助线程调用了render()
,因此它抛出了一个异常。SurfaceView是一个视图。您可以扩展SurfaceView
- 创建您的SurfaceView实例
- 然后设置ContentView(曲面视图实例)
您已经完成了。如果您将其包装在Runonuith中,您的方式应该会起作用。请阅读:
public void render() {
if(gameOver)
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
View gameOverView = LayoutInflater.from(activity).inflate(R.layout.gameover);
// code to get the layout
// and finally
layout.addView(gameOverView);
}
});
}
在屏幕上为游戏启动另一个活动可能更好?我这样做了,实际上我使用的是SurfaceView的扩展类。我创建了一个名为update()的方法,该方法每秒调用60次(60FPS),假设该方法将更新实体的统计信息,并检查gameOver。游戏结束后,游戏应该暂停并在屏幕上显示游戏。为什么不使用onDraw方法?哦,没有特别的原因,我想我可以使用它。这比调用public void render(){if(gameover)activity.showGameOverScreen();…
?和haveshowGameOverScreen()好吗
显示所有内容这取决于您的游戏架构。我会按照您的答案来回答,这似乎是正确的答案。顺便问一下,我应该使用同步
?