2017-09-13 4 views
-1

J'ai commencé à utiliser Lib GDX AssetManager à la place de la méthode "normale" pour importer des textures. Cependant, lors de l'expérimentation, j'ai rapidement rencontré une erreur NullPointerException. Voici le code:LibGDX TextureRegion NullPointerException

assets = Generals.getAssetManager(); 
    assets.load("Characters/c.pack", TextureAtlas.class); 
    assets.finishLoading(); 
    TextureAtlas atlas = assets.get("Characters/c.pack", TextureAtlas.class); 
    atlas.findRegion("PriestOverworld3"); 
    Array<TextureRegion> frames = new Array<TextureRegion>(); 
    Texture testtex = new Texture("Characters/c.png"); 
    TextureRegion test = new TextureRegion(testtex); 
    for (int i = 0; i < 3; i++) { 
     System.out.println(i); 
     frames.add(new TextureRegion(getTexture(), i * 16, 0, 16, 16)); 
    } 
    playerStasis = new Animation<>(0.2f, frames); 

je reçois un NullPointerException à la ligne

frames.add(new TextureRegion(getTexture(), i * 16, 0, 16, 16)); 

L'erreur:

Exception in thread "LWJGL Application" java.lang.NullPointerException 
    at com.badlogic.gdx.graphics.g2d.TextureRegion.setRegion(TextureRegion.java:82) 
    at com.badlogic.gdx.graphics.g2d.TextureRegion.<init>(TextureRegion.java:53) 
    at Project.sprites.Player.<init>(Player.java:55) 

TextureRegion:

// TextureRegion.java:53 
setRegion(x, y, width, height); 
... 
// TextureRegion.java:82 
float invTexWidth = 1f/texture.getWidth(); 
+0

ce qui ne fonctionne 'getTexture()'? –

+0

getTexture() obtient la Texture de TextureRegion. Dans ce cas, "PriestOverworld3" est le TextureRegion. c.pack est le TextureAtlas, qui utilise c.png. c.png est la texture utilisée. – JasperMW

Répondre

2

regarde comme vous êtes trouver l'atlasRegion et non t le définissant sur une variable.

Essayez d'utiliser cette

frames.add(new TextureRegion(atlas.findRegion("PriestOverworld3"), i * 16, 0, 16, 16)); 
+0

A travaillé! Merci beaucoup, j'ai regardé mon écran pendant 3 heures maintenant. – JasperMW