在java中重置对象

时间:2012-08-15 11:47:38

标签: java android

我正在开发Android游戏。整个游戏玩法都在“游戏玩法”课程中。问题是当我想再次启动选项时我不知道如何从“Gameplay”类中删除“mg”对象并创建一个新对象。这是我的代码:

package com.PJA.game;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class GameScreen extends BaseScreen {
    static short state=1;
    Gameplay mg;
    Menu mm;
    LostScreen ls;
    public GameScreen(Gra game) {
        super(game);
        mm=new Menu();
        mg=new Gameplay();
        ls=new LostScreen();
    }

    public void update() {
        if(state==1)    mm.live();
        if(state==2)    mg.live();
        if(state==3)    ls.live();

        Gdx.app.log("CurrentState: ", Integer.toString(state));
    }

    public void drau(SpriteBatch sb) {
        if(state==1)    mm.show(sb);
        if(state==2)    mg.show(sb);    
        if(state==3)    ls.show(sb);
    }
}

3 个答案:

答案 0 :(得分:1)

制作一个新的并将其设置为mg

答案 1 :(得分:0)

mg = new Gameplay()

这将创建一个新实例,它将替换旧实例(最终将被垃圾收集)

另一个更冗长的选项是编写.reset()方法,将Gameplay的所有字段设置为初始值。这将使您更好地控制要重置的字段,但如果您想要所有内容 - 只需创建Gameplay的新实例

答案 2 :(得分:0)

初始化构造函数中的所有字段通常是个坏主意。虽然感觉很自然,但它限制了重复使用。创建专用的init()reset()方法通常会更好:

public GameScreen(Gra game) {
    super(game);

    reset();
}

public void reset() {
    mm=new Menu();
    mg=new Gameplay();
    ls=new LostScreen();
}
相关问题