我有一个具有holder.setFixedSize(1280, 720);
的Android游戏开发的表面视图。上面添加了几个精灵。我想在碰到精灵时采取一些行动。以下是我的SurfaceView.onTouch
代码,其中我获得了屏幕的x and y
值,而不是Surface View XY。
请帮助我找出表面视图的实际XY。
@Override
public boolean onTouch(View view, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
if (scenes.size() > 0) {
Scene scene = scenes.get(scenes.size() - 1);
if (scene != null) {
int size = scene.getSprites().size();
Log.i(TAG, "Surface Touched. size : " + size);
for (int j = size - 1; j >= 0; j--) {
Sprite s = scene.getSprites().get(j);
if (s.isTouchable() && s.performTouch(x, y)) {
Log.i(TAG, "Touch handled by sprite");
return true;
}
}
}
}
break;
}
case MotionEvent.ACTION_MOVE: {
break;
}
}
return false;
}
更改x
和y
的计算,如下所示:
int x = (int) (event.getX() * 1280 / view.getWidth());
int y = (int) (event.getY() * 720 / view.getHeight());