Переопределить функцию onTouchEvent в классе GLES Renderer? - PullRequest
0 голосов
/ 18 мая 2011

я пытаюсь сделать простую игру с Gles на android.

Я много гуглил для решения, но я не смог найти никого, кто бы упоминал, как реализовать ontouchevent в GLES.

здесья, как я реализовал это до сих пор ... я знаю, что это глупый способ сделать это: D, но это был единственный способ, которым я мог придумать, чтобы освободить переменную positionx, пока нет постукивания

краткое резюмемой класс рендерера ...

public class GLmain implements Renderer {
public float mX,mY;
public boolean clicked;
public GLmain() 
    {
    clicked=false;
    }
    public void onDrawFrame(GL10 gl) {
      if(clicked)
      {
      positionx=mX;
      positiony=mY;
      clicked=false
      }
    }
}

в и класс активности

public class Alpha extends Activity {
private GLSurfaceView glSurface;
public float mousex,mousey;
public GLmain glrend=new GLmain();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    glSurface = new GLSurfaceView(this);    
    glSurface.setRenderer(glrend);
    setContentView(glSurface);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
    glrend.clicked=true;
    glrend.mX=event.getX();
    glrend.mY=event.getY();
    return true;
}}

1 Ответ

1 голос
/ 19 мая 2011

Это не глупый способ сделать это!Вы не можете напрямую звонить в Renderer, потому что он находится в другом потоке, поэтому вам нужно провести опрос Renderer для получения информации, когда это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...