0

我正在开发一款安卓游戏。整个游戏都在“游戏”类中。问题是当我想要重新开始选项时,我不知道如何从“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);
    }
}
4

3 回答 3

1

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

于 2012-08-15T11:50:20.217 回答
0
mg = new Gameplay()

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

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

于 2012-08-15T11:50:57.983 回答
0

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

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

    reset();
}

public void reset() {
    mm=new Menu();
    mg=new Gameplay();
    ls=new LostScreen();
}
于 2012-08-15T11:51:58.797 回答