在JavaFX中如何在类之间切换?

时间:2019-06-01 21:27:53

标签: java javafx

我有一个游戏模板,该模板有两个等级。 游戏中有玩家,敌人,宝藏和墙壁。 当我运行该程序时,它将成功加载级别1。我已经设计了代码,因此如果满足特定条件,则必须加载Level 2。现在,第2级加载。但是,第1级的某些元素仍保留在屏幕上,而忽略了第2级的某些元素。 确切地说: 从级别2开始,它将加载玩家的初始坐标,宝箱和最终目的地,而忽略敌人和墙壁。 从1级到2级:墙壁,宝藏和敌人。后两个处于冻结状态。它们不起作用。

//实例变量:

private int lvlCount = 1; 

// Game()方法

public Game(Stage stage) {
    this.score = new SimpleIntegerProperty(0);
    this.mobs = new ArrayList<>();
    this.hitBoxes = new ArrayList<>();
    this.treasure = new ArrayList<>(); 
    this.newLevel = new ArrayList<>();  
    this.enemyCount = 0;
    bg();
    loadLevel(1); 
    living();
    stuff();
    mob2();
    finalText();
    stage.setOnShown(e -> this.run());
}

//用于加载级别的开关:

void loadLevel(int in) {
    switch (in) {
    case 1:
        this.level = new Level1();
        break;
    case 2:
        this.level = new Level2(); // placeholder for second level
        break;
    }

//碰撞检查:

private void collisionCheck() {if (r.getFill().equals(Color.WHITE)){lvlCount--;}

//主游戏循环方法:

private void play() {
    AnimationTimer gameLoop = new AnimationTimer() {
public void handle(long arg0) {
            for (int i = 0; i < mobs.size(); i++) {
                MOB m = mobs.get(i);
                if (m instanceof Enemy) {
                    ((Enemy) m).moveCheck(arg0);
                }
            }
 collisionCheck();
if (lvlCount == 0){
                loadLevel(2);} //The condition that loads Level 2
gameLoop.start();
} 

请帮助我弄清楚如何成功加载Level 2。 请注意,它不会在控制台中产生任何错误。因此,我很难弄清楚问题出在哪里。

我只粘贴了我认为达到目标所必需的代码。这是完整的代码:https://www70.zippyshare.com/v/6uDa0nTT/file.html

非常感谢您。

0 个答案:

没有答案