gpt4 book ai didi

android - Android中的 Activity , View 和对话框。正确的游戏应用程序结构

转载 作者:行者123 更新时间:2023-11-30 04:51:42 26 4
gpt4 key购买 nike

我当时正尝试修改android,以尝试制作这个小型探索游戏。到目前为止,我实际上已经走了很多:一个漂亮的Sprite系统,一个带有主菜单的标题屏幕,该菜单全都包含在游戏代码中(没有UI按钮或任何东西),可以启动各种活动。加载此很酷的地图视图的活动,单击该活动将加载地图的更详细的“放大”操作部分的另一个视图。一切都很好,但是现在我不知道我要如何做。

(当实例化然后将集合上下文移动到新视图时,视图会发生什么变化?我猜测,只要活动仍然存在,活动使用的各种视图的所有实例化仍然是好的。并且在onPause活动中是id必须保存在这些视图中更改过的数据以在用户退出游戏等情况下保持状态的时间。

游戏开始时我有三个菜单选项。主要的是:
新游戏


新游戏,我启动主地图
可以启动三个视图的活动:
前两个是的加载屏幕
第二个是地图屏幕。
第三视图是更详细的操作
使用此精灵的定向零件
我开发的引擎。


一切正常,就像在地图视图中单击一个单元格一样,它通过侦听器告诉Calling Activity启动详细的操作视图,然后传入单元格的ID(因此它知道要在详细视图中加载哪些对象基于第二个视图中单击的单元格)。 (这花了我一段时间,但有人在这里帮助解决了另一个问题。) here.这部分对我有帮助的参考资料我也在ViewSwitcher上使用了各种信息。

我在第二个视图中甚至得到一个是或否对话框,询问他们在单击该单元格时是否真的要转到该单元格,是则告诉调用方设置新视图。帮助我完成此工作的是引用here.,我还不得不弄弄对getContext的调用,而且,我仍然不确定100%getResourcesgetContext对我有什么帮助。

那么从视图中调用和加载对话框是不好的做法吗?如果是这样,那么我不明白如果视图中有一个事件需要弹出一个对话框,我该怎么做?回调活动,让活动处理对话框响应,然后在视图上为响应调用方法?

到目前为止,所有这些工作都很好,我也确实有一点要学习线程。我为MenuView生成了另一个线程(处理按钮单击和响应的检测),CellMap视图处理了很酷的大地图,用户可以单击该大地图来查看深度视图,这是我的SystemView视图。

因此,活动呼叫清单基本上是这样的:

Home.Activity-> ScrollMap.activity,在是/否对话框中(在CellMap的视图中)侦听CellMap,如果问题的答案为是,则onTouchEvent使用以下命令启动SystemView视图


private CellMap.MapClickedListener onTouchEvent=
new CellMap.MapClickedListener() {
@Override
public void onMapClick(int id) {
setContentView(new SolarSystem(theContext,id));
}
};


为了帮助其他人,必须在我的CellMap类中定义该侦听器。然后在ScrollMap活动中,当我要启动CellMap时,我只是调用CellMap设置地图点击侦听器的方法。到目前为止,这是我能够从对话框(在这种情况下,单击它以便设置新视图)中的数据返回到调用活动的唯一方法。这是正确的做法吗?

现在,我最大的问题是,我有一个playerObject类,我想在新的游戏事件上初始化该类(我知道如何检测到该推动),然后该类可用于整个生命周期中任何活动中的任何视图。到目前为止,游戏活动只有两个(如果计入加载进度栏,则为3个)视图。我想获得玩家的名字,这是另一项活动或观点吗?我找不到关于如何制作一个简单的输入对话框以返回字符串的不错的教程。

我该如何传递这些东西?从要加载此编辑框的任何位置获取播放器名称后,我要在该类中设置播放器名称,并将该类实例传递给另一个视图或活动,以便他们可以获取该数据。我搜索过的所有内容似乎都显得过分或不正确。传递此“ playerClass”的最佳方法是什么,以便我可以从其他视图访问它(也就是说在每个视图中显示玩家名称)。

我也有我的家庭活动,等待onClick 3个按钮,然后启动他们的活动以显示视图。我知道继续游戏和新游戏是相同的活动,只是更改从驱动器加载的数据以恢复保存游戏。当单击新游戏按钮时,我希望获得他们想要使用的玩家名称,并且当然将playerClass的成员设置为该名称,以便其持续存在。

我从哪里调用(是一个编辑对话框?)编辑对话框? (有关如何构建一个可以按下一个好的按钮并从键盘等输入内容的信息)。我也想使它漂亮,也许我可以有一个简单的视图,其中有一个编辑框和一个漂亮的图像背景(尽管我还没有弄清楚如何放置这些编辑框以很好地匹配我为之绘制的背景我猜想id就像是一个编辑对话框,我可以通过外观来查看自己想要的样式并适合游戏的外观)。

到目前为止,我确实很高兴自己看起来还不错,只是不确定某些细节,例如获取用户输入的播放器名称。存储该信息,然后将其传递给其他活动和视图。

拥有一个GameMain活动并获得大量视图是否更好:
地图检视
字符表视图
库存视图等?

还是在某处也有差异活动?

最佳答案

您在这里写了很多东西,所以我要继续回答我认为您要问的问题。

首先,如何在活动和视图之间共享信息?如果您只是在单个活动的视图之间共享它,则将其存储在Activity子类的实例中。

活动之间的共享需要更多一点。可以使用Application的子类来代替使用默认Application类的实例,而可以使用它。将数据放在该子类的字段中。要告诉您的应用使用您的子类,请按如下所示修改应用清单:

<application
....
android:name=".YourAppClassNameHere">
....
</application>


至于获取用户输入,简单的答案是使用内置的EditText视图。但是,由于您似乎希望为游戏提供更多的“自定义”样式,因此您可能需要创建自己的可编辑文本框。那和按钮应该允许大多数基本的用户输入。

现在,针对活动和观点进行良好实践。我不知道这样做的标准,但是在设计时,我通常会尝试将活动视为在概念上更独立的元素,而视图在概念上是相互交织的。两者之间的界线部分取决于应用程序的范围;与重点广泛的应用相比,重点较窄的应用可以将更多的操作分解为不同的活动。

您的“ GameMain”示例有些困难,但我认为您做出了正确的选择:活动是“玩游戏”,而不是菜单或高分表,并且视图呈现了不同的方面正在玩的游戏。

关于android - Android中的 Activity , View 和对话框。正确的游戏应用程序结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3105056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com