J'ai un conteneur qui gère toutes les touches et traverse (si nécessaire) certains des événements à son enfant en appelant onTouch qui est implémenté par la vue enfant.Le problème est que le conteneur reçoit des touches dans son propre système de coordonnées et de l'enfant doivent traduire en CS.Here de l'enfant est le code du conteneur:convertir les coordonnées de l'espace de coordonnées du conteneur en un enfant
@Override
public boolean onTouchEvent(MotionEvent event) {
//handle some gestures
....
//traverse motion event so container's children can handle it
if(numFingers==1)
content.onTouch(content,event);
return true;
}
code de l'enfant:
public boolean onTouch(View v, MotionEvent event) {
//get child's tranformation
Matrix m=this.getMatrix();
float[] coords=new float[2];
//get touch coords
coords[0]=event.getX();
coords[1]=event.getY();
//translate it to child's coordinates
m.mapPoints(coords);
PointF p =new PointF(coords[0],coords[1]);
Piece piece=getPieceUnderPoint(p);
if (piece!=null)
Log.d("game field3",piece.i+","+piece.j);
return true;
}
Je peux voir mes coordonnées est traduit de façon incorrecte par le rectangle dessin sur la toile de l'enfant autour point de contact.
pouvez-vous afficher les coordonnées attendues et les coordonnées observées – suku