0
私はholder.setFixedSize(1280, 720);
のAndroid用ゲーム開発用SurfaceViewを持っています。少数のスプライトを追加しました。スプライトが触れたときにいくつかのアクションをしたい。以下は私のSurfaceView.onTouch
コードです。ここでは、面図XYの代わりにx and y
の値を取得しています。Android:固定サイズのときにSurfaceViewのタッチ位置を見つける方法?
表面ビューの実際の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;
}
理想的には、この解決策です。 'view.getWidth()'と 'view.getHeight()'はそれぞれ1280と720を返すので、結果のXYは変化しません。この問題を解決するために、私はsurfaveview 'actualX'と' actualY'値を 'setFixedSize()'の前に置いて、 'view.getWidth()'を 'actualX'と' view.getHeight() 'をactualYに置き換えました。それは私の問題を解決する。ご協力いただきありがとうございます。それに応じて回答を更新してください。 –