0

我正在关注动态壁纸的在线教程。在此期间,我遇到了一个我觉得很奇怪的问题。问题是下面代码中的构造函数 MyPoint 说它正在获取 String、int、int 并且它需要 String、float、float。但是,此构造函数中的 x 和 y 引用本地浮点x 和 y。我通过在构造函数中选择 x 或 y 进行检查,本地浮点 x 或 y 会亮起,因此它应该将浮点数作为输入。那么为什么会出现这个错误呢?

@Override
public void onTouchEvent(MotionEvent event) {
if (touchEnabled) {

  float x = event.getX();
  float y = event.getY();
  SurfaceHolder holder = getSurfaceHolder();
  Canvas canvas = null;
  try {
    canvas = holder.lockCanvas();
    if (canvas != null) {
      canvas.drawColor(Color.BLACK);
      circles.clear();
      circles.add(new MyPoint(String.valueOf(circles.size() + 1), x, y));
      drawCircles(canvas, circles);

    }
  } finally {
    if (canvas != null)
      holder.unlockCanvasAndPost(canvas);
  }
  super.onTouchEvent(event);
}
}

编辑:

确切的错误是:“构造函数 MyPoint(String, float, float) 未定义”

使用快速修复选项:“将构造函数 MyPoint(String, int, int) 更改为 MyPoint(String, float, float)”

4

1 回答 1

2

构造函数不请求任何东西。它需要您在构造函数签名中定义的任何类型的值。如果您没有提供正确类型的值,那么编译器将无法编译您的代码,因为您已经告诉它通过接收不存在的 String、float、float 的构造函数来实例化 MyPoint 的实例。

因此,错误至少在您的“MyPoint”类中。如果 MyPoint 构造函数确实需要整数,则显示的代码中也可能有错误。但是,查看您的代码,float 似乎更有可能。

错误及其解决方案很简单。

在 MyPoint 中,您有

public MyPoint(String name, int x, int y);

你也应该有

public MyPoint(String name, float x, float y);

我假设你想要两者。如果您不需要构造函数接收 x 和 y 作为整数,那么只需更改它。

于 2012-11-10T15:30:58.407 回答