当前位置: 首页 > 面试题库 >

如果按下按钮,如何在一定时间内显示图像

昝阳嘉
2023-03-14
问题内容

因此,我正在制作一个跳跃动画,并且效果很好,但是我正在尝试获取它,因此如果按下按钮但返回一定时间后,图像将显示一定的时间(时间=空中停留的时间)精灵到达地面后,恢复到原始图像。我已经研究了很多,但是还没有找到合适的答案。但是我正在考虑如果按下某个按钮来更改imageview,但是我不确定这是否可行。

我的密码

   public void start(Stage primaryStage) throws Exception {
    final Group root = new Group();
    Scene scene = new Scene(root, 640, 480, Color.ALICEBLUE);

    Image imgninja = new Image(getClass().getResourceAsStream("ninja_sprite.png"));
    Image tempground = new Image(getClass().getResourceAsStream("ground.png"));
    Image tempground2 = new Image(getClass().getResourceAsStream("ground.png"));
    final Image test = new Image(getClass().getResourceAsStream("myninja_1.png"));
    final Rectangle r = new Rectangle();
    r.setX(rectx);
    r.setY(recty);
    r.setWidth(50);
    r.setHeight(100);
    r.setArcWidth(20);
    r.setArcHeight(20);

    Button button = new Button();
    iview = new ImageView(imgninja);
    iview.setLayoutX(ninjax);
    iview.setLayoutY(ninjay);
    iview2 = new ImageView(tempground);
    iview2.setLayoutX(backgroundx);
    iview2.setLayoutY(backgroundy);
    iview3 = new ImageView(tempground2);
    iview3.setLayoutX(555);
    iview3.setLayoutY(backgroundy);
    iview4 = new ImageView(test);
    iview4.setLayoutX(aix);
    iview4.setLayoutY(aiy);


    root.getChildren().addAll(iview2, iview3, button, iview, r,iview4);
    primaryStage.setTitle("A basic window");
    primaryStage.setScene(scene);
    primaryStage.show();

    button.setOnKeyPressed(new EventHandler<KeyEvent>() {

        @Override
        public void handle(KeyEvent event) {

            if (event.getCode() == KeyCode.LEFT) {

                ninjax = ninjax - 10;
                iview.setLayoutX(ninjax);
            }

            if (event.getCode() == KeyCode.UP) {

                if (ninjay > 365) {
                    jumpforce = -16;

                }
                iview.setLayoutY(ninjay);

            }
            if (event.getCode() == KeyCode.RIGHT) {


                ninjax = ninjax + 10;

                iview.setLayoutY(ninjax);

            }

        }

    });

    new AnimationTimer() {


        @Override

        public void handle(long now) {

            if (iview.getBoundsInParent().intersects(iview2.getBoundsInParent())) {

                groundforce = -gravity;

            } else {
                groundforce = 0;

            }

            if (jumpforce < 0) {

                ninjay = ninjay - (-gravity) + jumpforce + groundforce;
                ninjax = ninjax + 3;

                jumpforce = jumpforce + 1;

            } else if (ninjay < 365) {
                ninjay = ninjay - (gravity) + jumpforce + groundforce;

                ninjax = ninjax + 3;

            }

            iview.setLayoutY(ninjay);
            iview.setLayoutX(ninjax);

        }

    }.start();

}

问题答案:

通常,您可以使用PauseTransition

Duration delay = ... ;
PauseTransition timer = new PauseTransition(delay);
timer.setOnFinished(evt -> undoWhatIDidToUI());
doSomethingToUI();
timer.play();

所以,如果我了解你,

Duration delay = ... ; // time for a jump
PauseTransition jumpTimer = new PauseTransition(delay);
jumpTimer.setOnFinished(evt -> iview.setImage(imgninja));
iview.setImage(jumpingImage);
jumpTimer.play();

尽管仅在动画计时器中检测您当前是否正在跳跃,然后setImage(...)根据是否跳跃来调用适当的图像,这可能会更容易。(setImage(...)使用与当前使用的图像相同的图像基本上是无操作的,因此在执行操作时应该没有性能问题。)我认为这就像:

@Override
public void handle(long now) {

    // existing code...

    if (jumpforce < 0) {
        iview.setImage(jumpingImage);
    } else {
        iview.setImage(imgninja);
    }

    // ...
}


 类似资料:
  • Javascript(jQuery)代码 HTML/EJS代码 我读过的一些不起作用的帖子: 如何在单击按钮时通过动画显示视图? 尝试在单击按钮时显示div

  • 问题内容: 我正在为我的女友开发这款游戏,而现在我在同一个问题上停留了几天。基本上,我希望她能够按5次“ Gather Wood”按钮,然后在她第五次按该按钮后立即弹出“ Create Fire”按钮。 1.问题是,无论我尝试以哪种方式编程要显示在第五个按钮上的方法,它都不会显示。 我将不胜感激任何编码技巧或大家认为我可以做的任何清理当前代码的事情。 这是收集木纽扣 这是创建按钮 问题答案: 基本

  • 问题内容: 我正在尝试使用Apple的 SwiftUI 制作一个应用程序,我需要有两个按钮在同一行中显示两个不同的视图。 我使用 Xcode beta 7 和 MacOS Catalina beta 7 。我尝试添加一个表示视图的视图,但是无法单击它,而当我尝试在外部进行简单单击并单击该视图时,该视图没有出现。我也尝试过添加一个内部,但是它也不起作用。单击时也无法添加,视图仍然不会出现 我希望该视

  • 我正在使用android导航组件库。我用导航图设置了两个片段。我想在我的片段内按下后退按钮时做一些额外的动作。 我使用这段代码来处理工具栏上的按钮点击,但我也想处理后退按钮按下。我该怎么做?

  • 我用的是Android Studio2.2,最小sdk的项目是23。 请帮助我做所需的代码。

  • 嗨,我在修复我的单选按钮时遇到问题,我是编码新手,我制作了一个简单的计算器,但我不知道如何解决这个问题。 公共空onClick(查看art0) { // 待办事项自动生成方法存根 我的问题与if语句有关,方程式不正确,因为它说不识别“*”如何格式化方程式以使其工作而不删除方程式,如果此代码中还有其他错误,我会欣赏,如果你能解决这个问题,谢谢你