2017-07-12 2 views
0

-je gérer mon onTouchEvent comme ceci:Android Comment gérer efficacement Boutonvent dans OpenGL Thread?

public boolean onTouchEvent(MotionEvent event) 
{ 
    queueEvent(new Runnable(){ 
     public void run(){ 
     mRenderer.onTouchEvent(event); 
     } 
    }); 
    return true; 
} 

J'ai à faire la queue à l'appel dans mon fil GL parce que je veux mettre à jour la plupart des choses que si les touches utilisateur et les changements de trucs liés au jeu.

Cependant, la solution queueEvent semble être un peu lente. Cela prend 10-15ms entre l'onTouchEvent à MainActivity et l'onTouchEvent à mon Renderer. Est-il possible de réduire les délais sans passer directement à onTouchEvent?

+0

Je ne sais pas si cela aidera, mais j'ai dû déplacer mon onTouchEvent hors de la GLSurfaceView dans MainActivity. De plus, return true permet les événements de glissement et false pour la gestion des événements de glissement. – WLGfx

Répondre

0

Si vous y pensez de cette façon, 10-15 ms signifie que vous serez en mesure de dessiner l'image suivante à partir de l'entrée utilisateur actuelle. À 60fps (défaut android), il y a 16 ms entre chaque image. Il doit synchroniser l'entrée avec le moteur de rendu et il ne peut pas interférer à tout moment. Bien sûr, vous pouvez modifier les valeurs à l'intérieur du moteur de rendu de manière synchronisée, mais cela ne peut être réalisé que dans le cadre suivant, ce qui peut prendre autant de temps.