Мне нужно переместить две фигуры на их оси Y, как мне это сделать? - PullRequest
0 голосов
/ 25 сентября 2019

Проблема в моем назначении вызывает стрелку, которая перемещается вверх на 50 пикселей от своего исходного состояния.Он вызывает метод "moveUp", для этого мне нужно использовать методы setYInt() и getYInt().

Это мой текущий код:

import java.awt.*;
public class Arrow {
   private Canvas canvas;
   private Triangle head = new Triangle(120, 500, 50, 50, true);
   private Rectangle shaft = new Rectangle(140, 550, 10, 100);

   public Arrow(Canvas _canvas) {
      canvas = _canvas;
      Triangle head = new Triangle(120, 500, 50, 50, true);
      Rectangle shaft = new Rectangle(140, 550, 10, 100);
   }

   public void draw() {
      canvas.draw(head);
      canvas.draw(shaft);
   }

   public void erase() {
      canvas.erase(head);
      canvas.erase(shaft);
   }

   public void moveUp() {
      head.getYInt();
      shaft.getYInt();
      head.setYInt(head.getYInt - 50);
   }
}

ОшибкиЯ получаю с этим кодом:

Arrow.java:32: error: cannot find symbol
      head.setYInt(head.getYInt - 50);
                       ^
  symbol:   variable getYInt
  location: variable head of type Triangle
1 error

Я не понимаю, как я должен получить целое число Y и установить его на другое.Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 25 сентября 2019
head.setYInt(head.getYInt - 50);

Вы используете head.getYInt, который не является функцией.Попробуйте .getYInt() вместо.

0 голосов
/ 25 сентября 2019

Здесь:

head.setYInt(head.getYInt - 50);

Кажется, вы намереваетесь вызвать метод setYInt() для головного объекта.И, скорее всего, вы хотели использовать от head.getYInt() до сначала для получения текущего значения Y.

Итак: либо используйте методы getter / setter повсеместно, либо (не рекомендуется),просто получите доступ к соответствующим полям.

Помимо этого:

private Triangle head = new Triangle(120, 500, 50, 50, true);

...

public Arrow(Canvas _canvas) {
  Triangle head = new Triangle(120, 500, 50, 50, true);

Не имеет особого смысла: вы уже инициализировали head,делать это снова не имеет смысла.Хуже того: вы на самом деле не инициализируете заголовок своего поля в конструкторе, вы создаете локальную переменную, инициализируете ее, а затем забываете об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...