switch 语句,一次只使用一种情况
Switch statement , only using one case at a time
我正在尝试将正方形 'p' 向左或向右平移 5 个单位,具体取决于按下的键。问题是,当按下 'right' 或 'left' 时,它会朝那个方向平移 5 个单位,但是当我再次按下时,我无法移动,我必须再次按下 'left' 才能向右移动所以我哪儿也去不了。
有谁知道这是为什么?
Task PlyThread=new Task() {
@Override
protected Object call() throws Exception {
myScene.setOnKeyPressed(event -> {
switch (event.getCode()){
//case UP: p.setTranslateY(((p.getY())-5)) ; break;
case LEFT: p.setTranslateX(((p.getX())-5)) ; break;
case RIGHT: p.setTranslateX(((p.getX())+5)) ;break;
}
});
return null;
}
};new Thread(PlyThread).start();
好的,我假设 "Rectangle" 是 javafx.scene.shape.Rectangle
。在这种情况下,setTranslateX()
只修改变换矩阵,不改变矩形坐标 X。属性 X 的值保持不变,下一次调用 setTranslateX(getX()+5)
与之前的调用完全相同。
您需要使用平移或坐标,即使用 setTranslateX()
/getTranslateX()
或 setX()
/getX()
。
除了在屏幕上移动矩形之外,这两种选择都可能产生其他结果,但我没有使用 JavaFX 的经验,所以很遗憾我无法详细说明。
我正在尝试将正方形 'p' 向左或向右平移 5 个单位,具体取决于按下的键。问题是,当按下 'right' 或 'left' 时,它会朝那个方向平移 5 个单位,但是当我再次按下时,我无法移动,我必须再次按下 'left' 才能向右移动所以我哪儿也去不了。 有谁知道这是为什么?
Task PlyThread=new Task() {
@Override
protected Object call() throws Exception {
myScene.setOnKeyPressed(event -> {
switch (event.getCode()){
//case UP: p.setTranslateY(((p.getY())-5)) ; break;
case LEFT: p.setTranslateX(((p.getX())-5)) ; break;
case RIGHT: p.setTranslateX(((p.getX())+5)) ;break;
}
});
return null;
}
};new Thread(PlyThread).start();
好的,我假设 "Rectangle" 是 javafx.scene.shape.Rectangle
。在这种情况下,setTranslateX()
只修改变换矩阵,不改变矩形坐标 X。属性 X 的值保持不变,下一次调用 setTranslateX(getX()+5)
与之前的调用完全相同。
您需要使用平移或坐标,即使用 setTranslateX()
/getTranslateX()
或 setX()
/getX()
。
除了在屏幕上移动矩形之外,这两种选择都可能产生其他结果,但我没有使用 JavaFX 的经验,所以很遗憾我无法详细说明。