0

私はAndroidゲームに取り組んでいます。ゲームプレイ全体は「ゲームプレイ」クラスにあります。問題は、もう一度開始するオプションが必要な場合で、「ゲームプレイ」クラスから「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()専用のorreset()メソッドを作成する方がよい場合がよくあります。

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 に答える