我正在开发一个OpenGL Android游戏,我现在正在处理用户输入。
我有两个主要的想法来实现它。他们两个我认为他们的工作完美,但我不知道哪一个“更好”(性能/速度)。
基本原理是在屏幕周围的某些特定位置上,在Opengl中绘制了几个“按钮”(例如四个箭头键,操作按钮......)。这些按钮在游戏过程中不会改变位置。
第一个想法
我的第一个实现是创建一个带有每个按钮引用的2D矩阵。类似的东西:
InputObject matrix = new InputObject[Width_of_screen][Height_of_screen]
在加载阶段,每个按钮在Matrix中插入它们出现的每个像素的参考。
因此,每次用户触摸屏幕时,我都可以直接在矩阵上查看他点击的按钮(e.getX()
和e.getY()
)。
优点:“快速”知道要拨打哪个按钮。
缺点:(在常见屏幕上)800 * 480~300K引用,其中80%为null
(但内存堆已经占用)
第二次IDEA
我的第二个计划是制作一个ArrayList
输入对象并询问每个输入对象是否属于他们。类似的东西:
for(InputObject ob : TheArrayList){
if (ob.for_him(e.getX(),e.getY())){
ob.do_it();
break; //They cannot overlap
}
}
优点:占用的空间更少(根本没有null
个引用...)
缺点:必须检测每个对象是否为自身,因此需要对for_him
方法进行比较。占用更多CPU时间。
有了这些说法,由于没有太多的处理器时间供用户输入,哪一个可能是Android手机(和其他智能手机)的最佳选择。
如果有第三种也是最好的方法,我很乐意了解它。
提前致谢。