Я работаю над приложением ogl на android
Я не использую какой-либо сенсорный слушатель или что-либо заранее сделанное, потому что рано или поздно вы теряете время, пытаясь понять, как сделать что-то. Lol
то, что я нашел, чтобы работать хорошо, это просто
@Override
public boolean onTouchEvent(MotionEvent event) {
if(sr != null){
/*if(event.getAction() == MotionEvent.ACTION_DOWN){
}else if(event.getAction() == MotionEvent.ACTION_MOVE){
}else if(event.getAction() == MotionEvent.ACTION_CANCEL){
}else if(event.getAction() == MotionEvent.ACTION_UP){*/
GameHandler.onTouchEvent(event);
//}
}
return true;
}
, и в GameHandler я сначала преобразовываю касание из экранных координат в координаты glworld.
в моих элементах пользовательского интерфейса, которые у меня естьположение и размер, и я добавляю метод "touch (...)" или "isTouched ()"
, по моим наблюдениям, это работает довольно хорошо, и я рекомендую вам попробовать его ^^
редактировать преобразование касанием
public static void convertTouchToWorldRef(Vect vect){
vect.y = (SceneRenderer.Height-vect.y)/SceneRenderer.Height*SceneRenderer.GAME_DIMENSION_H;
vect.x = (vect.x)/SceneRenderer.Width*SceneRenderer.GAME_DIMENSION_W;
}
;
вам нужно на y, чтобы сделать высоту-y (у ogl и у андроида разное расположение источника)
GAME_DIMENSION_ * - размер мира oglплоскость проекции (800 * 600).
затем ее основные математические (я не помню английское название), но ее формула thales x1 / X1 = x2 / X2.
Редактировать: Вектор
public class Vector{
private float x = 0;
private float y = 0;
public Vector(float x, float y){
this.x = x;
this.y = y;
}
//add accessors get/set
...
}
Вы можете просматривать Интернет для лучших примеров, таких как http://www.gamedev.net/community/forums/topic.asp?topic_id=302771