我有以下课程
1-级等级
Stage stage;
MyActor[] myActors;
boolean isCompleted = false;
public void checkSolution() {
if(myActor[0].getRotation() > 180) {
isCompleted = true;
}
}
public void render(float delta) {
stage.act(delta);
stage.draw();
checkSolution();
}
2-持有ArrayList<Level> levels
3-具有这些方法的GameScreen类
@Override
public void show() {
data = new Data();
data.loadLevels();
level = data.levels.get(0);
Gdx.input.setInputProcessor(level.stage);
}
@Override
public void render(float delta) {
level.render(delta);
}
如何移动到下一级并从内存中删除前一级?
我应该在哪里拨打上一级的stage.dispose()
?
答案 0 :(得分:1)
可能的解决方案之一是启动下一级别的新GameScreen。您在代码中使用的模式并不十分清楚。因此,假设您的GameScreen类具有公共构造函数
public GameScreen(Game game, int level) {
this.game = game;
this.level = level;
}
然后,这取决于你如何加载你的关卡,我可以假设你使用了关于它的关卡数量的按钮。因此,您可以将该数字传递给构造函数并加载所有必要的资产:
data.loadLevels();
level = data.levels.get(level);
所以,最后一步是你的checkSolution方法,你应该添加:
if(isCompleted) {
game.setScreen(new GameScreen(game, level + 1));
}
希望,你明白了。