java - 如何获取android中特定区域的坐标?

标签 java android canvas android-canvas

我正在制作一个带有射击游戏的游戏,这样当使用点击时它应该向左或向右移动,但它是在 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/

相关文章:

javascript - 等待添加到 CSS 的图像加载 - JQuery

java - 在 Canvas Java SWT Draw2d 上显示层次树结构

java - SonarQube Java 分析器是否应该能够分析语义上不正确的 Java 源代码?

java - Hibernate——使用where子句进行选择——从域对象中获取数据

java - 为什么这个java链接检查器代码不能编译?

java - 为 Android 应用程序创建类图

java - UML 类图关系

android - 如何在模拟器上测试日历事件?

java - Activity 在某些设备上无法正常工作

javascript - 在 Canvas 中以 % 宽度居中圆圈