2016-06-16 6 views
1

Mit libgdx erstelle ich ein 2D-Spiel. Ich möchte alle Texturen in ein Array laden. Also habe ich eine Klasse für sie erstellt. Ich möchte das Bild-Array-Schleife innerhalb des render():libgdx kann Textur nicht in Array laden

public class LoadingImages { 
    public Texture[] images; 

    public area1() { 
     images[0] = new Texture(Gdx.files.internal("img/image1.jpg")); 
    } 
} 

Das gibt mir und Fehler, wenn ich versuche, es zu laufen:

Exception in thread "LWJGL Application" java.lang.NullPointerException 
      at com.mygame.game.LoadingImages.loading(LoadingImages.java:31) 

Die Anzahl der Bilder wird in Abhängigkeit von dem Bereich variabel sein .

+0

Bitte stellt die Fehler Sie –

+0

Exception in thread "LWJGL Application" java.lang.NullPointerException \t bei com.mygame.game.LoadingImages.loading (LoadingImages.java:31) 31 bekam ist die Zeilennummer an Bilder [0] = neue Textur (Gdx.files.internal ("img/image1.jpg")); – Mateus

+0

Danke :). Bitte aktualisiere deine Frage damit. –

Antwort

2

Siehe auch What is a NullPointerException, and how do I fix it?.

Sie versuchen, auf eine Variable zuzugreifen, die Sie noch nicht zugewiesen haben: images[0]. Bevor Sie das erste Element in einem Array verwenden können, müssen Sie ein Array erstellen, das mindestens die Größe 1 hat. So ändern Sie es an:

public *void* area1() { 
    images = new Texture[1]; 
    images[0] = new Texture(Gdx.files.internal("img/image1.jpg")); 
} 

Mit dieser sagte, Ihre Ausnahme nicht mit Ihrem Code. Außerdem sollten Sie Ihre Vorgehensweise überdenken. Wenn Sie viele Texturen verwenden, wirkt sich dies schnell auf die Leistung aus, da das Löschen des Stapels impliziert wird. Es ist besser, Ihre Bilder in eine einzige Textur zu packen. Wenn Sie auf Ihre Bilder per Index zugreifen möchten, ist das immer noch möglich. See this.

Auch AssetManager ist viel bequemer als das manuelle Laden aller Ihrer Assets. See this.

+0

Mein Spiel ist alle 2d Bilder und soud, Bereich1 haben 1 Hintergrundbild und einige Spryte Animationen auf, wenn der Spieler von gehen Bereich1 bis Bereich2 der Hintergrund ändern, aber einige Sprite Animationen sind die gleichen und andere sind neu, was wird der beste Ansatz ?, Jetzt lade ich den Hintergrund als ein einzelnes Bild, und die Sprites Animationen als Atlas Texturen. für jedes Objekt animiert – Mateus

Verwandte Themen