2010-12-17 86 views
0

我正在为Android做第一款游戏,但我遇到了很多困难。对我而言,API在某些方面似乎有点奇怪(例如对话框 - 为什么他们必须经历事件......),但我正在慢慢学习。我应该将我的代码放在Activity或View中吗?

但现在,我有点失落。我不确定在哪里准确地放置我的代码,我不知道如何弄清楚最佳方式。

我已经做了我自己的View,GameView,它在onDraw事件中进行绘制。我也将大部分代码放入GameView中。例如,当您触摸View(在onTouch事件中)时,我会处理它并执行操作。

但是现在我想要显示一个标准的对话框,并且我读取它必须通过一个Activity来完成,使用showDialog和onDialog事件。我有点困惑,我不能直接通过视图显示对话框。

所以我开始思考,也许我做这一切都错了......也许我不应该把所有的代码放到视图中,而是把我的代码放在活动中?当我浏览API对话框的例子时,他们只是从XML中获取按钮并将事件附加到它们等等,所有这些都在Activiy内部。

我希望我的问题有点清楚。我不确定哪个代码应该去哪里,以及如何在活动和(游戏)视图之间进行交互。

回答

0

很难说你的设计是否好,但我不会太担心。

LunarLander示例在Activity(仅基本创建菜单)中的代码非常少,并且大部分游戏逻辑确实在View中执行。当然,如果你想要一个响应式游戏,你应该尽可能减少onDraw()方法本身。

0

您应该创建一个带布局的xml。它将包含GameView,它将会知道它所显示的活动。所以,当你检测到前。触摸事件在你的GameView中,你将能够询问活动来显示对话框。看到的概念:

public void MyActivtiy extends Activity { 

    @Override 
    public void onCreate() { 
    // your initialization 
    GameView view = (GameView) findViewById(R.id.gameView); 
    view.setCalledActivity(this); 
    } 

} 

public GameView extends View { 
    private Context context; 

    public void setCalledActivity(Context context) { 
    this.context = context; 
    } 

    @Override 
    public void onTouchEvent(...) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    builder.setMessage("Are you sure you want to exit?") 
    .setCancelable(false) 
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      MyActivity.this.finish(); 
     } 
    })  ; 
    AlertDialog alert = builder.create(); 
    alert.show(); 
    } 
} 
+0

那么,我将不得不从视图中调用showDialog方法,并处理Activity中的onDialog事件,将代码分开? – pbean 2010-12-17 11:52:29

+0

查看更新的答案。您不需要任何onDialog事件来创建对话框。 – 2010-12-17 11:56:11

+0

API文档指出,如果您管理自己的对话框,则必须确保释放资源等,以免泄漏对话框和/或视图,并且如果您通过onDialog事件管理它,Android会自动为您完成。 – pbean 2010-12-17 12:08:11

相关问题