3

これらの出力を取得するコードがあります。libgdx フレームワークを使用していますが、アプリケーションの起動後に resize が 2 回呼び出されているようです。私は何も変わったことをしていないのに、なぜ2回呼び出されるのだろうか。以下のクラスは、Screen クラスを実装する AbstractScreen から拡張されています。アプリケーションのライフサイクルへのリンク: http://code.google.com/p/libgdx/wiki/ApplicationLifeCycle

The tags refer to the Functions being called:

SHOW(): devInfo.glyphWidth=18
SHOW(): devInfo.glyphHeight=27
AbstractScreen.resize: screenScaleX=0.8
AbstractScreen.resize: screenScaleY=0.8
resize(): devInfo.glyphWidth=14
resize(): devInfo.glyphHeight=21
resize(): logoSplashSprite.getWidth=204.8
resize(): logoSplashSprite.getHeight=204.8
AbstractScreen.resize: screenScaleX=0.8
AbstractScreen.resize: screenScaleY=0.8
resize(): devInfo.glyphWidth=11
resize(): devInfo.glyphHeight=16
resize(): logoSplashSprite.getWidth=204.8
resize(): logoSplashSprite.getHeight=204.8
fps 0
fps 65
.
.
.

ありがとう

4

1 に答える 1

5

'AbstractScreen' クラスと 'Game' クラスのサンプル コードを投稿していただければ幸いです。次の設定があるとします。

public class MySuperGame extends Game {

    @Override
    public void create() {
         setScreen(new MyScreen(this));
    }

    @Override
    public void resize(int width, int height) {
         super.resize(width,height);
    }
}

そこに投稿したアプリケーションのライフサイクルによると、「ゲーム」クラスが開始されると、「ゲーム」クラスの次のメソッドが呼び出されます。

  1. 作成()
  2. サイズ変更()

問題は、「create()」メソッド内で「setScreen()」を呼び出すと、「Game」クラスが画面を設定し、新しく設定された「resize()」メソッドを呼び出すことです。画面。

次に、'Game' クラスの 'resize()' メソッドが呼び出されます。また、'Game' クラスは画面の 'resize()' メソッドを呼び出します。

要約すると、画面の「resize()」メソッドが 2 回呼び出されます。画面が設定されたときと、ゲームのサイズが変更されたときです。

それが役立つことを願っています。

于 2013-03-03T00:37:42.437 に答える