我正在为Android制作我的第一款游戏,但我遇到了很多困难。对我来说,API在某些方面似乎有点奇怪(例如对话框 - 为什么他们必须经历事件......)但我正在慢慢学习。
但是现在,我有点迷失了。我不确定在哪里准确地放置我的代码,我真的不知道如何找出最好的方法。
我制作了自己的View,GameView,它在onDraw事件中进行绘制。我还将大部分代码放入GameView中。例如,当您触摸View(在onTouch事件中)时,我会处理它并执行操作。
但是现在我想显示一个标准的对话框,我读它必须通过一个Activity,showDialog和onDialog事件来完成。我有点困惑,我不能直接通过View显示对话框。
所以我开始思考,也许我做错了...也许我不应该将所有代码放入View中,而是将我的代码放入Activity中?当我浏览API对话框示例时,他们只是从XML中获取按钮并将事件附加到它们等所有内容都在Activiy内。
我希望我的问题/问题有点清楚。我不确定哪些代码应该去哪里,以及如何在Activity和(Game)视图之间进行交互等。
答案 0 :(得分: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();
}
}
答案 1 :(得分:0)
很难说你的设计是好还是不好,但我不会太担心。
LunarLander示例在Activity
中的代码非常少(基本上只创建菜单),并且大多数游戏逻辑确实在View
中实现。当然,如果你想要一个响应式游戏,你应该尽可能少地使用onDraw()
方法。