我一直在关注一些关于起步的教程。我想在游戏中加入某种小部件,但问题是表面视图不会让你使用像按钮这样的小部件。我看到一个framelayout视图可以工作,但我想知道我是否应该经历尝试这个的麻烦,或者让我自己的小部件看起来像一个按钮。只是有一个可触摸的点击框,可以检查新闻并采取相应的行动。
我想知道最好的方式是什么......
感谢。
答案 0 :(得分:0)
我不确定我是否可以明确地说出哪种方式最好。就编码复杂性而言,我下面的第一个建议可能更容易。如果您使用第二个建议,您可能会更好地控制小部件在游戏环境中的工作方式。
从技术上讲,你可以使用带有SurfaceView的按钮,我相信这必须通过一个单独的布局完成,该布局分层在下面(我认为)SurfaceView(我不熟悉这个方法) )。要使用这种类型的方法,您需要存储小部件的边界矩形(我使用Rect
完成此操作),然后当您覆盖onTouchEvent(MotionEvent event)
方法时,您将使用Rect(use your bounding rectangles here).contains(event.getX(), event.getY());
确定实际TouchEvent的位置是否与窗口小部件的位置相对应。如果返回true,则在窗口小部件上设置一个标志,这样当后台线程运行时,它将看到标志并执行某些功能(例如打开清单屏幕)。
根据我的阅读,为您的小部件创建一个Bitmap并将其绘制到SurfaceView是完全可行的。您仍然需要计算与位图小部件的位置相关的触摸事件的位置。如果您使用此位图方法,您应该记住,例如,如果要创建一个复选框,则需要多个版本的位图,以便在用户触摸它时看起来已经检查/取消选中。
以下是我发现的一些非常有助于学习Android游戏开发的资源:
此链接适用于编写一套非常好的教程,教您如何制作合法的2D游戏: http://www.javacodegeeks.com/2011/06/android-game-development-tutorials.html
此链接非常好地解释了Android系统如何跨多个UI布局层解释和处理TouchEvents: http://balpha.de/2013/07/android-development-what-i-wish-i-had-known-earlier/
游戏设计概念的良好概述: https://gamedev.stackexchange.com/a/21205/62663