switch语句,一次仅使用一种情况

时间:2019-02-28 21:26:01

标签: java javafx switch-statement javafx-8

我尝试根据所按的键向左或向右平移5个正方形的“ p”。问题在于,当按下“向右”或“向左”时,它将在该方向上平移5个单位,但是当我再次按下时,我将无法移动,而必须再次按下“向左”,以使我向右移动,所以我什么也没得到。 有人知道为什么吗?

    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();

1 个答案:

答案 0 :(得分:3)

好的,我假设“矩形”为javafx.scene.shape.Rectangle。在这种情况下,setTranslateX()仅修改变换矩阵,而不会更改矩形坐标X。属性X的值保持不变,对setTranslateX(getX()+5)的下一次调用与以前的调用完全相同。

您需要使用平移或坐标,即使用setTranslateX() / getTranslateX()setX() / getX()

除了在屏幕上移动矩形外,这两种选择都可能带来其他后果,但是我没有JavaFX的经验,因此很遗憾,我无法详细说明。