My KeyPressed正在工作,但是我的moveLeft方法没有改变avatarDX。我是否用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
你也考虑使用lambda表达式:'camera.setOnKeyPressed(event - > {...});' – pzaenger