哪种方式更适合在OpenGL Android游戏中获取用户输入?

时间:2012-08-01 11:20:04

标签: android opengl-es touch user-input

我正在开发一个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手机(和其他智能手机)的最佳选择。

如果有第三种也是最好的方法,我很乐意了解它。

提前致谢。

0 个答案:

没有答案