0

というクラスがありScreenます。アプリケーションで新しい Screen を設定するたびに、次のメソッドを呼び出します。

public void setScreen(Screen screen) {
        if(this.screen != null) {
            this.screen.pause();
            this.screen.onDispose();

        }
        this.getGraphics().drawColor(Color.BLACK); // Clear virtual framebuffer
        this.screen = screen;
        this.screen.load();
        this.screen.resume(); 
        WSLog.e(Game.GAME_ENGINE_TAG, this, "New Screen has been created");
}

ここで私の質問は次のとおりです。コンストラクターの関数をloadメソッドに置き換えることは許されますか?

新しい画面を設定するとき、現在の画面を最初に破棄してから新しい画面をロードできるため、これを行っていますが、コンストラクターですべての読み込みを行うと、新しい画面が最初に初期化され、次に現在のものは処分されます(これは理想的ではありません)。

4

2 に答える 2

0

それは間違いなく許されます。
C# でウィンドウ フォームを使用する場合、フォームのすべてのオブジェクトとイベントを設定するために使用される InitializeComponents() というメソッドがあります。あなたが言ったように、あなたがそれをしたくない時があるので、あなたのシナリオは有効です。

コンストラクターは、変数の初期化および/または最小限のスペースの割り当てに使用されます。コードを他のメソッドに追加することを恐れないでください。特に、コードの一部を使用したくない場合を想定できる場合はなおさらです。これにより、プログラムがより柔軟になります。

幸運を :)

于 2013-04-02T00:56:42.403 に答える
0

それは完全に有効であり、コンストラクターをまったく置き換えていません。a の主な役割は、constructor変数を初期化して、オブジェクトを使用可能な状態にすることです。ただし、オブジェクトがそのすべての責任をすぐに果たさなければならないという意味ではありません。Engineクラスを設計したとしましょう。そのコンストラクターを呼び出すことは、エンジンをすぐに開始することを意味する必要はありません。startオブジェクト インスタンスが作成された後にエンジンを起動できるメソッドを用意しても問題はありません。

于 2013-04-02T00:49:35.067 に答える