libgdxというフレームワークを使ってゲームプログラミングを学んでいます。ユーザーは、デスクトップ上の Java 仮想マシンと Android 携帯電話の両方で簡単に実行できるプログラムを作成できます。画面に文字を表示し、キーボードで前後に移動できる基本的なプログラムを作成しようとしています。私は 3 つのクラスを作成しました -Assets
ファイルをメモリにロードし、それらをテクスチャとアニメーションに変換すると呼ばれるクラス、アニメーションInputHandler
や移動方向などを変更することによってキー入力に応答すると呼ばれるクラス、および と呼ばれるクラスFightView
です。レンダリングが行われます。は、通常のコマンドでクラスInputHandler
から呼び出されます。のコンストラクタは次のようになります。FightView
input = new InputHandler(anim, frame);
InputHandler
public InputHandler(Animation animation, TextureRegion region){
Assets.load(); //loads textures from files into memory and creates animations from them
animation = Assets.playStance; //set initial animation to be used
region = animation.getKeyFrame(0, true); //make TextureRegion equal to first frame in animation
}
さて、私がやりたいことは、コンストラクターに渡された Animation と TextureRegion が上記の値に設定されていることです。たとえば、宣言された後にクラスで言及region
した場合、次のように設定されます。 . Java の私の限られた経験から、これは起こるべきだと私が信じていることですが、コンパイル時に以下のコードの 2 行目を指す NullPointerException が発生します。FightView
input
animation.getKeyFrame(0, true);
input = new InputHandler(anim, frame);
x = centreX - (frame.getRegionWidth() / 2);
明らかに、frame
(コンストラクターの 3 行目でわかるように) 値を割り当てる必要があるコンストラクターを通過した後でも、まだ null です。コンストラクターに渡される前に、それらは実際には両方とも null であることに注意してください。クラスで必要なくフィールド データを提供するクラスを作成しようとしていますFightView
。
どんな助けでも感謝します。これは間違った方法である可能性があります。私がしようとしているのは、初期化時にAnimation
andTextureRegion
にデータをロードするオブジェクトを作成することです。