在Javafx卡拉OK游戏中使用多少时间轴?

时间:2018-06-13 18:59:23

标签: java javafx javafx-8

所以我想这是一个关于效率的问题。我正在制作一个卡拉OK风格的游戏,其中“音符”在屏幕上显示为动画,你必须在正确的时间按下正确的按钮。到目前为止添加注释的代码是:

private void addNote(Pane pane){
        int lineNumber = ThreadLocalRandom.current().nextInt(0, 3);
        Circle note = new Circle();
        note.setRadius(10);
        note.setCenterX(500 + (50*lineNumber));
        pane.getChildren().add(note);
        Timeline timeline = new Timeline();
        timeline.getKeyFrames().addAll(
                new KeyFrame(new Duration(5000),
                        new KeyValue(note.layoutYProperty(), (400), Interpolator.EASE_BOTH),
                        new KeyValue(note.opacityProperty(), 0, Interpolator.EASE_OUT)
                )
        );
        timeline.play();
    }

每个音符都有自己的时间表。当每0.1秒运行一次这种方法时,我的GPU的使用率约为60%(从应用程序的正常20%左右)。我估计大约有30个小黑圈在屏幕上动画并逐渐消失。对于这种简单的形状和简单的动画来说,这似乎是巨大的GPU用途。

所以我想问问任何人 - 这种极端用法是一次动画形状数量的结果,还是我有30多个时间轴同时运行的事实?我是否可以采取任何措施来减少这里的使用量。也许有一种方法可以用一个时间轴来做到这一点?

编辑:我尝试使用缓存提示SPEED来缓存圈子 - 这似乎可以摧毁大约15%的使用率。如果可能的话还是想要更多!

0 个答案:

没有答案