entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Problema con Libgdx

Hola, tengo un problema con la librería de LIBGDX

Esto es lo que me pone en LogCat:

E/AndroidRuntime(971): FATAL EXCEPTION: GLThread 60
E/AndroidRuntime(971): Process: com.Videojuego, PID: 971
E/AndroidRuntime(971): java.lang.NullPointerException
E/AndroidRuntime(971):  at com.Videojuego.MyGame.create(MyGame.java:28)
 E/AndroidRuntime(971):     at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:209)
E/AndroidRuntime(971):  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1512)
E/AndroidRuntime(971):  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

Y este es mi codigo :

package com.Videojuego;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;

public class MyGame extends Game implements ApplicationListener {/// 

    Texture Fondo,personaje;
    SpriteBatch Batcher;
    Sprite FondoSprite;
    OrthographicCamera cam;
    TextureRegion[] personajes;

    public void create() {

        Fondo = new Texture(Gdx.files.internal("mono.jpg"));
        personaje = new Texture (Gdx.files.internal("personajes.jpg"));
        personajes[0] = new TextureRegion(personaje,0,0,46,46);
        personajes[1] = new TextureRegion(personaje,80,0,80,80);
        Batcher = new SpriteBatch();

        this.setScreen(new PantallaJuego(this));   

package com.Videojuego;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;

public class PantallaJuego implements Screen{

    MyGame juego;

    SpriteBatch Batcher; // 
    Texture Fondo,personaje;
    TextureRegion[] personajes;
    OrthographicCamera cam;
    Sprite FondoSprite; /// 

    public PantallaJuego(MyGame game){

        this.juego = game;
    }

    public void dispose() { // 

        Batcher.dispose();
        Fondo.dispose();
        personaje.dispose();

    }

    @Override
    public void hide() { //

        Batcher.dispose();
        personaje.dispose();
        Fondo.dispose();

    }

    @Override
    public void pause() { //
        Batcher.dispose();
        Fondo.dispose();
        personaje.dispose();
    }

    @Override
    public void render(float arg0) { // 
        Gdx.gl.glClearColor(0,0,0,1); /// Color de pantalla
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); // 
        Batcher.begin();// 
        Batcher.draw(Fondo,0,0,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
        Batcher.draw(personajes[0],20,20);
        Batcher.draw(personajes[1],20,22);
        Batcher.end();

    }

    @Override
    public void resize(int arg0, int arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    public void resume() {
        // TODO Auto-generated method stub

    }

    @Override
    public void show() {

        Fondo = new Texture (Gdx.files.internal("mono.jpg"));
        FondoSprite = new Sprite(Fondo);
        FondoSprite.setPosition(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
        personaje = new Texture(Gdx.files.internal("personajes.jpg"));
        personajes[0] = new TextureRegion(personaje,0,0,46,46);
        personajes[1] = new TextureRegion(personaje,80,0,80,80);

        Batcher = new SpriteBatch();

    }

}

    }

    }

¿Cual es el problema ?

Si alguien me pudiera ayudar.

Gracias :)

1 Respuesta

1voto

white Puntos75880

Hola @carla_Maria el problema esta en como declaras el array personajes, debes definir el tamaño del array.

reemplaza en los 2 archivos que tienes, en la clase MyGame y en la clase PantallaJuego esta linea:

TextureRegion[] personajes;

por

TextureRegion[] personajes = new TextureRegion[4];

asi le dices a la variable personajes que guarde espacio para 4 regiones de textura, tu define el número ahí.

saludos!

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/arays.htm

0voto

carla_Maria comentado

Gracias era lo que decías :)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta