私はOpenGLAndroidゲームを開発しており、現在ユーザー入力を扱っています。
私はそれを実装するための2つの主要なアイデアを持っています。2つは完璧に機能すると思いますが、どちらが「優れている」か(パフォーマンス/速度)はわかりません。
基本は、Openglで描画されるいくつかの「ボタン」(4つの矢印キー、アクションボタンなど)が画面の特定の位置にあることです。これらのボタンは、ゲームプレイ中に場所が変わることはありません。
最初のアイデア
私の最初の実装は、各ボタンへの参照を持つ2Dマトリックスを作成することでした。何かのようなもの:
InputObject matrix = new InputObject[Width_of_screen][Height_of_screen]
ロード段階で、各ボタンは、それらが表示される各ピクセルの参照をマトリックスに挿入します。
したがって、ユーザーが画面に触れるたびに、ユーザーがクリックしたボタン(e.getX()
およびe.getY()
)をマトリックスで直接見ることができます。
長所:どのボタンを呼び出すかを知るための「高速」。
短所:(一般的な画面で)800 * 480〜300Kの参照、それらの80%がnull
(ただし、メモリヒープはすでに使用されています)
2番目のアイデア
私の2番目の計画は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フォン(およびその他のスマートフォン)にはどちらが最適かと言えます。
3番目の最善のアプローチがある場合は、それについて知りたいと思います。
前もって感謝します。