【问题标题】:Android - What classes to use for UI game developmentAndroid - 用于 UI 游戏开发的类
【发布时间】:2010-08-30 21:08:02
【问题描述】:

我正在尝试确定如何构建我正在编写的简单安卓游戏的代码。我专注于 UI 部分。幕后部分(如暂停/重启/切换/等)与我无关。 Android 演示游戏源代码已经在这方面做得很好。

基本上,我的游戏需要一个用户界面,其中包含用户可以与之交互的屏幕上的一系列对象(大约 100 或 10x10)。我需要为每个对象提供一个图像,并为每个对象实现触摸事件和动画事件。我想知道的是我为每个对象使用什么类型的类,以便我可以成功地实现这些方法以及如何实现那个特定的类。请注意,此游戏仅在用户与这些对象之一交互时执行,这意味着我不需要“实时”实现。

我的研究似乎指向了每个屏幕对象都必须是视图对象的方向,并且我需要将每个视图对象放置在视图组容器中。然后我需要决定视图组的布局,但我真的不确定。这是一种可行的方法还是有更好的选择?

我想我在寻找设计方法比什么都重要。谢谢你的建议。

【问题讨论】:

    标签: java android eclipse


    【解决方案1】:

    继续阅读使用SurfaceView,它提供了一个Canvas,您可以轻松地在其上绘制对象(为您的对象提供一个draw() 方法,该方法将Canvas 作为参数,以便他们可以将自己绘制到上面)/位图/形状。查看JetBoy 游戏的示例代码,应该可以帮助您入门。

    【讨论】:

    • 如何设计 UI 以适应我需要一种方法来允许用户单独与每个屏幕对象交互的事实?当我对这个项目进行第一次迭代时,我意识到我将不得不跟踪用户触摸屏幕的实际位置以操纵每个对象,这似乎是一个巨大的痛苦,而不是仅仅设计应用程序在屏幕上显示许多不同的对象。
    • 您需要覆盖各种 OnTouch 事件。这些将为您提供触摸点的 x,y 坐标,您可以使用它来更新游戏状态。
    • 是的,我跟着你。也许我的思考过程是试图避免必须同时处理 x、y、坐标。我什至不确定如何映射触摸事件的 x、y 坐标来触发画布上的特定位图动画。位图有一个位置,但它与触摸事件的位置不完全匹配(可能是与位置数组相比的 for 循环)。
    • 我的想法是,如果我有一堆视图对象,一个 onTouch 事件可以简单地触发视图对象动画和任何处理游戏的代码。我可以完全跳过处理屏幕位置。它是视图对象固有的。这是明智的,还是有意义的?
    • 如果你想做严肃的图形,你最终会使用 Canvas/Sur​​faceView 并手动计算出你触摸了哪个对象。这实际上并不难,尤其是当您的对象是静态的和/或不重叠时。
    【解决方案2】:

    每个图像/对象都可能是 ImageView 的扩展类。如果足够简单,或者只是一个 ImageView。

    在您的活动代码中,您可以将 onTouchListeners 附加到这些图像视图以确定用户何时触摸它们。

    您需要使用 SurfaceView 作为您的容器。然后,您可以将您的对象图像视图添加到表面视图,并且应该为您设置一个良好的起点。

    【讨论】:

    • 好的。我将开始阅读 ImageView 和 SurfaceView。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多