我正在创建一个小游戏。
我使用场景切换(具有主游戏屏幕的场景和带有一些帮助信息的场景)。因此,我决定使用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
}
}
您还可以对过渡管理器使用单例设计模式,以实现更好的封装。