删除前一个级别,进入下一级别

时间:2016-02-02 14:11:01

标签: android libgdx scene2d

我有以下课程

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()

1 个答案:

答案 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));
}

希望,你明白了。