Почему мой список Keyboardhandler не импортируется - PullRequest
0 голосов
/ 08 февраля 2020

Таким образом, обработчик клавиатуры печатает правильные коды клавиш, но в классе Playerentity ничего не срабатывает в выражениях IF. Я пытался сузить проблему только до этой проблемы. В других классах я интегрировал метод ES C -exit, он работает там, но, к сожалению, не в этом классе. Было бы неплохо получить некоторую вашу помощь, и я надеюсь, что у меня сейчас достаточно описания для StackOverflow, потому что я не знаю, что написать. Это мой первый вопрос, и я очень отчаянный и начинающий java, поэтому, пожалуйста, помогите мне:

package entities;

import java.awt.event.KeyEvent;
import controllers.KeyboardHandler;

public class PlayerEntity extends CircularEntity {

    private static final double VELOCITY = 36d;

    private KeyboardHandler keyboardHandler;
    private int moveX;
    private int moveY;

    public PlayerEntity(double x, double y) 
        super(40);
        keyboardHandler = new KeyboardHandler();
        this.x = x;
        this.y = y;

    }

    @Override
    public void tick(long milliSecondsPassed) {
        moveX = 0;
        moveY = 0;

        if (keyboardHandler.getPressedKeys().contains(KeyEvent.VK_W)) {
            moveY -= 1;
            System.out.println("move");
        }
        if (keyboardHandler.getPressedKeys().contains(KeyEvent.VK_S)) {
            moveY += 1;
        }
        if (keyboardHandler.getPressedKeys().contains(KeyEvent.VK_A)) {
            moveX -= 1;
        }
        if (keyboardHandler.getPressedKeys().contains(KeyEvent.VK_D)) {
            moveX += 1;
        }

        double moveDistance = (milliSecondsPassed / 1000d) * VELOCITY;
        move(moveDistance * moveX, moveDistance * moveY, moveDistance);
    }
}


package controllers;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;

public class KeyboardHandler extends KeyAdapter {

    List<Integer> keysPressed;

    public KeyboardHandler() {
        keysPressed = new ArrayList<Integer>();
    }

    public void keyPressed(KeyEvent e) {
        if (!keysPressed.contains(e.getKeyCode())) {
            keysPressed.add(e.getKeyCode());
            System.out.println("Add" + e.getKeyCode());
        }
    }

    public void keyReleased(KeyEvent e) {
         keysPressed.remove(Integer.valueOf(e.getKeyCode()));
    }

    public List<Integer> getPressedKeys() {
        return keysPressed;
    }
}
...