我正在制作一个带有射击游戏的游戏,这样当使用点击时它应该向左或向右移动,但它是在 Canvas 上制作的,并且 onclick 监听器不起作用,所以有人告诉我获取 Canvas 的坐标并使用 onclick 监听器但他不告诉我该怎么做 我的代码
package --------;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
public class Cannon {
float x = -1; // Cannon's center (x,y)
float y = -1;
float stepX = 40;
int lowerX, lowerY, upperX, upperY;
private Paint paint;
private Context mContext;
// Constructor
public Cannon(int color, Context c) {
paint = new Paint();
paint.setColor(color);
mContext = c;
}
public void setBounds(int lx, int ly, int ux, int uy) {
lowerX = lx;
lowerY = ly;
upperX = ux;
upperY = uy;
x = ux/2;
y = uy;
}
public void moveLeft() {
if (x - 30 > 0) {
x -= stepX;
}
}
public void moveRight() {
if (x + 30 < upperX) {
x += stepX;
}
}
public float getPosition() {
return x;
}
public void draw(Canvas canvas) {
canvas.drawLine(x, y -120, x, y, paint);
canvas.drawRect(x - 90, y - 40, x + 90, y, paint);
}
}
如何通过获取矩形的坐标来使用该矩形的 onclick 监听器来执行向左移动功能
最佳答案
您已经有一个方法 getPosition
,但它只返回 x
位置.. 创建一个返回 x
的位置以及返回 y
的一个,例如:
public float getCannonX(){
return x;
}
public float getCannonY(){
return y;
}
然后在你的Activity
中您可以设置 onClickListener
在你的大炮对象上并访问上面的方法。
或者您可以设置 onClickListener
在 Canvas 上并使用上述方法检查是否选择了大炮坐标。
您还应该考虑大炮对象的大小
关于java - 如何获取android中特定区域的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59550604/