我目前正在研究一款简单的2d塔防游戏,以学习Android游戏开发的一些基础知识。为了处理我的图形,我有一个扩展SurfaceView的自定义对象,我的所有绘图都在SurfaceView的canvas对象上进行。这一切都很好。
我希望我的游戏有两个阶段。 “战斗”阶段和“建设阶段”。在构建阶段,我正在尝试添加一个可以单击以启动下一个战斗阶段的按钮。根据我的研究,听起来像按钮无法添加到SurfaceView,但我应该将SurfaceView和按钮放在相对布局中并按照这种方式对齐。但是,因为我只希望按钮显示一半的时间,所以我正在努力寻找有条件地添加/删除按钮的最佳方式。我可以在那里破解它,但如果可能的话,我宁愿花时间做半正确的事情。不幸的是,我还没有找到任何好的例子。
有没有“最佳实践”的方法来做到这一点,还是我错过了什么?任何有关如何处理这个问题的代码示例都将非常感激。
谢谢!
更新: 我知道我可以使用布局来保存SurfaceView和我想要显示的按钮。我的问题是按钮只需偶尔可见。我需要做的是从我的SurfaceView对象设置父布局中按钮的可见性。然而,这是我正在努力的部分。
答案 0 :(得分:2)
GLSurfaceView view = new GLSurfaceView(this);
Button button = new Button(this);
setContentView(view);
addContentView(button,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT ));
尝试这段代码我已经放置了这样的textview,并且它有效
答案 1 :(得分:0)
将画布上的按钮绘制为覆盖游戏其余部分的位图。这使您可以更灵活地设计按钮的外观,并且可以使用if语句来检查何时应该绘制按钮。然后使用synchronized块从UI线程中提取touchevents,并检查它们何时落在按钮所在的屏幕区域内。
答案 2 :(得分:0)
将按钮添加到包含surfaceview的活动。然后,您可以通过将消息传递给更新surfaceview的线程中的处理程序来将其设置为可见/不可见。
请参阅LunarLander示例代码(尽管使用textview而不是按钮,iirc)。