java - switch 语句,一次只使用一种情况

标签 java javafx switch-statement javafx-8

我试图根据按下的键将正方形“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();

最佳答案

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

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

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

关于java - switch 语句,一次只使用一种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54934526/

相关文章:

java - 使用 FragmentTransaction 与 fragment 通信

java - 如何获得对 JavaFX 图表的低级别访问以便绘制图像?

c++ - 嵌套的 Switch 语句 - 返回到 switch 的开头

C 编程开关案例

java - 如何在 vaadin10 或自定义默认主题(lumo)中创建自定义主题

java - JavaFX 中的表

java - 将变量转换为最终变量

java - 如何在 JavaFX FXML 中公平分配 VBox 中的节点

java - TablewView setAll 的支持列表重置选择但不重置焦点

ios - 创建 switch 语句给我错误