我需要你在简单游戏中实现可滚动游戏场的最佳方法的建议.该字段由多行组成,每行有9个单元格.可以在游戏过程中动态添加和删除行.每个单元格中都有一个数字,并且可选地有几个重叠的图像,如选择,选择器,划掉,等等(参见下面的图片).用户应该能够单击一行中的单个单元格来选择/取消选择/跨越触摸的单元格.在游戏中的任何点,可以有0到3000个单元格(0到大约333行).该字段应平滑上下滚动.

我正在考虑使用ListView,其每一行都是该字段的一行.这样我就可以在游戏过程中动态添加/删除行.但是,我应该如何实现一行:有一个位图表示一行,然后当用户触摸它时 - 获取触摸区域的坐标,找出受影响的单元格,然后对此进行操作.是否可以在ListView中获取行的触摸坐标?如果没有,我应该在每一行放置9个虚拟图像占位符,然后根据用户触摸它们吗?性能怎么样?
或者我应该有一个巨大的位图/画布代表整个字段,将它放在ScrollView中然后计算所有坐标并在用户与之交互时更新它?它会比ListView更快还是更慢?
还有其他方法吗?
我更喜欢它是一个"常规"应用类型的游戏,而不是一个基于循环的游戏,因为我认为我真的不需要每秒重绘30次.
我是Android新手.谢谢你的建议.
您可以通过“游戏循环”/SurfaceView 组合轻松地使此类设置快速运行。这意味着没有 ListView,只有自定义绘图和事件处理。幸运的是,事件处理并不那么困难,而且您稍后会获胜,因为与使用一堆自定义视图和布局相比,您对界面拥有更大的控制权。
我会避免使用 www.droidnova.com 教程,它不必要地使用 HashMap,这只会降低性能。
我的做法如下:
现在您的屏幕上显示了一个对象网格。现在您想要限制当前显示的行数并添加一些功能来更改哪些行可见。这是按如下方式完成的:
newCurrentRow = (touch.y / canvas.height()) * boardSize; 需要一些调整,但你明白了。这种方法的缺点是一次仅显示完整的行集,因此滚动不会平滑。但是,您可以完全控制画布和绘制的内容,因此只需多一点数学知识,您就可以实现平滑的滚动机制,该机制将在 y 方向上偏移分数行高度而不是整行。
| 归档时间: |
|
| 查看次数: |
518 次 |
| 最近记录: |