Java-апплет keylistener

#java

#java

Вопрос:

У меня есть следующий код в Game.java:

 public void start ()
{
    Thread thread = new Thread(this);
    thread.start();

    this.world = new World();
}
  

В world class у меня есть настоящие предметы моей игры, набор стен, еда и игрок.

 public class World {
    private Food food;
    private HashSet<Wall> walls = new HashSet<Wall>();
    private Player player; 
    ...
}
  

Проблема заключается в следующем: Я хочу, чтобы мои keylisteners были в классе player, но, похоже, я не могу понять, как это получить…

Я попытался реализовать класс KeyListener в Player.java и реализация 3 функций, которые поставляются с этим. Однако, player.java не позволяет мне использовать this.addKeyListener (this), поэтому мои ключевые события никогда не запускаются…

Как я могу заставить это работать?

Комментарии:

1. Является ли этот Swing (JApplet)? AWT (использует класс апплета)?

Ответ №1:

Вам нужно вызвать addKeyListener на вашем Applet / JApplet и передать (тот же!) player экземпляр в качестве слушателя.

Комментарии:

1. Моей целью было сохранить все красиво и организованно (например, позволить игровому классу общаться только с World class, а не с базовыми классами Food и Player). Для этого решения (которое действительно работает) Я должен добавить метод getPlayer () в World class, который мне кажется не очень чистым. Или я все еще делаю что-то не так?

2. Вы могли бы предоставить World метод, который инициализирует себя из Applet (путем добавления обработчиков)