JavaFX 2.如何停止或暂停所有动画



我正在创建一个小游戏。

我使用场景切换(具有主游戏屏幕的场景和带有一些帮助信息的场景)。因此,我决定使用HashMap场景并在那里设置所有场景。然后单击"帮助"按钮会导致场景切换。

但我有一个问题。我想停止非活动场景上的所有动画,目前我只是将场景设置为 NULL。我知道这是非常糟糕的实现。

有人可以帮助我并解释如何暂停或停止场景中的所有动画吗?

在主舞台上设置场景:

public static void setSceneToStage(String sceneId, Stage stage) {
    SceneCollection.instance().clearCurrentActiveScene();
    SceneCollection.instance().setNewActiveScene(sceneId);
    stage.setScene(SceneCollection.instance().getScene(sceneId));
    stage.setTitle(sceneId);
}

清除非活动场景:

public void clearCurrentActiveScene() {
    if(activeScene != null) {
        scenes.get(activeScene).clearScene();
    }
}
public void clearScene() {
    scene = null;
}

初始化新场景:

public void setNewActiveScene(String sceneId) {
    activeScene = sceneId;
    scenes.get(sceneId).init();
}
public void init() {
    scene = new Scene(new Pane(), 300, 300);
}

我认为您的程序必须具有一个结构,您可以一次访问所有转换,例如,您可以拥有"TransitonManager Class",并且在该类中您有一个转换数组列表,然后您可以将此转换添加到其构造函数中,然后在需要时,您可以访问所有转换并停止它们。

class TransitionManger{
public static ArrayList<Transition> transitions = new ArrayList<>();
}
class CustomTransition extends Transition{
  CustomTransition(){
      TransitionManger.transitions.add(this);
  }
@Override
protected void interpolate(double v) {
  //todo do what you want
}

}

您还可以对过渡管理器使用单例设计模式,以实现更好的封装。

最新更新