2016-08-27 6 views
2

libGDXのAssetManagerを使用しています。私のファイルが.update()メソッドを使って読み込まれていることを確認しました。 AssetManager.update()がtrueを返すと、ブール値がロードされ、がtrueになります(すべてがロードされたことを意味します)。私のファイルがロードされていても、AssetManager.get()がnullを返す

if(loaded) 
{ 
    if(player == null && walls == null) 
    { 
     player = new Player(this); 
     walls = new WallList(this); 
    } 
    //unrelated stuff 
} 

私の選手オブジェクトはテクスチャを使用しており、うまく動作します。 しかし、私の壁オブジェクトもテクスチャを使用しますが、クラッシュします。ここに私のセットアップが(私のWallListコンストラクタで)上記のコードで

//unrelated stuff 
this.colors = new HashMap<Color, String>(); 
this.spawningColor = Color.red; 

colors.put(Color.red, "sqr_wall_red"); 

for(int i = 0; i < wallCountNeeded; i++) 
{ 
    this.add(new Wall(getTextureFromColor(spawningColor), i*wallWidth, 0)); 
} 

だ、私はHashMapを作成し、また、PNGの名前である「sqr_wall_red」を割り当てます。 Color.Redをパラメータとして使用している間、TextureFromColorを呼び出してAssetManagerからテクスチャを取得します。

private Texture getTextureFromColor(Color color) 
{ 
    return game.getAssetManager().get("data/Sprites/" + colors.get(color) + ".png", Texture.class); 
} 

そして私はcom.cedric.game.geometry.WallList.getTextureFromColorのスレッド "LWJGLアプリケーション" のjava.lang.NullPointerException (WallList.java:45)でこのエラー

例外を取得com.cedric.game.geometry.WallListで 。(WallList.java:39)

私はこの

ようにそれをロードするため、パスが大丈夫であるという事実ではかなり自信
assetManager.load("data/Sprites/sqr_wall_red.png", Texture.class); 

と私は(assetManager.getために使用しているパスを印刷する場合)

System.out.println("data/Sprites/" + colors.get(spawningColor) + ".png"); 

IはassetManager.load(正確な入力と一致出力()

としてこれを取得します

データ/スプライト/ sqr_wall_red.png

私は私の問題を解決するために十分な情報を提供してきたと思いますが、あなたは、NE場合私はより多くを喜んで表示します。

+0

'WallList.java'の45行目は何ですか? –

+0

戻るgame.getAssetManager()。get( "data/Sprites /" + colors.get(color)+ ".png"、Texture.class); –

+0

NPEの原因となるコード行には、少なくとも3つの可能性のある場所があります: 'game'、' getAssetManager() '、' colors'。それがどれであるかを判断する必要があります。 –

答えて

3
return game.getAssetManager().get("data/Sprites/" + colors.get(color) + ".png", Texture.class); 

3つの可能NPEを引き起こす可能性があり、コードの行の場所があります:gamegetAssetManager()、およびcolorsは。それがどれであるかを判断する必要があります。

関連する問題