My KeyPressed работает, но никаких изменений в файле аватараDX от моего метода moveLeft нет. Я сделал что-то не так с moveLeft? Похоже, это должно быть просто, но я не уверен, что я сделал не так. У меня нет сообщений об ошибках.Перемещение изображения на холсте с помощью KeyPressed
Я рисую изображение на холсте с
gc.drawImage(avatar, avatarSX, avatarSY, avatarSW, avatarSH, avatarDX, avatarDY, avatarDW, avatarDH);
Для Keypressed У меня есть
canvas.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent ke) {
double speed = 2;
switch(ke.getCode()) {
case A:
System.out.println("pressed a");
moveLeft(avatarDX, speed);
System.out.println(avatarDX);
break;
}
}
});
И moveLeft является
private void moveLeft(double avatarDX, double speed) {
while (avatarDX > 0) {
avatarDX -= speed;
}
}
Я был бы признателен за любую помощь я очень новый в этом.
Java - это вызов по значению (http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value). Поэтому изменение значения вашего параметра метода не изменяет ничего, кроме локальной копии этого 'double'. – fabian
Вы также думаете об использовании выражения лямбда: 'camera.setOnKeyPressed (event -> {...});' – pzaenger