Mein KeyPressed funktioniert, aber es gibt keine Änderung in avatarDX von meiner Methode moveLeft. Habe ich mit moveLeft etwas falsch gemacht? Es scheint, als sollte es einfach sein, aber ich bin mir nicht sicher, was ich falsch gemacht habe. Ich habe keine Fehlermeldungen.Verschieben eines Bildes auf Leinwand mit KeyPressed
Ich zeichne ein Bild auf einer Leinwand mit
gc.drawImage(avatar, avatarSX, avatarSY, avatarSW, avatarSH, avatarDX, avatarDY, avatarDW, avatarDH);
Für KeyPressed Ich habe
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;
}
}
});
Und ist moveleft
private void moveLeft(double avatarDX, double speed) {
while (avatarDX > 0) {
avatarDX -= speed;
}
}
ich jede Hilfe dankbar wäre ich sehr bin neu dabei.
Java ist Aufruf nach Wert (http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value). Wenn Sie also den Wert Ihres Methodenparameters ändern, ändert das nichts an der lokalen Kopie dieses 'double'. – fabian
Sie sollten auch einen Lambda-Ausdruck verwenden: 'camera.setOnKeyPressed (event -> {...});' – pzaenger