切换语句,一次只使用一个案例

问题描述 投票:1回答:1

我试图向左或向右翻译一个正方形'p'5个单位,具体取决于按下了什么键。问题是,当按下“右”或“左”时,它将在该方向上翻译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();
java javafx switch-statement javafx-8
1个回答
3
投票

好吧,我认为“矩形”是javafx.scene.shape.Rectangle。在这种情况下,setTranslateX()只修改变换矩阵,不会改变矩形坐标X.属性X的值保持不变,下一次调用setTranslateX(getX()+5)的工作与之前完全相同。

你需要使用翻译或坐标,即使用setTranslateX() / getTranslateX()setX() / getX()

除了在屏幕上移动矩形之外,这两种选择都可能产生其他后果,但我没有JavaFX的经验,所以不幸的是我无法详细说明。

© www.soinside.com 2019 - 2024. All rights reserved.