2016-07-08 1 views
0

J'ai démarré un très petit projet Libgdx basé sur Scene2d. J'ai descendu la dernière version de LGDX. J'ai essayé de trouver une certaine imformation mais rien de clair. Le problème est que je reçois seulement un écran noir de la mort. Rien ne se passe J'ai suivi le code, avec les logs et je suis sûr que j'arrive à la méthode Draw dans mon Acteur sans résultat:Libgdx Acteur Scened2d La méthode Draw ne dessine rien

Merci d'avance.

public class ActorBall extends Actor implements Disposable { 
private Texture ballTexture; 
private TextureRegion ballTextureRegion; 

public ActorBall() { 
    bolaTexture = new Texture("redball.png"); 

    ballTextureRegion = new TextureRegion(ballTexture, 300,300); 
    setSize(300,300); 
} 

@Override 
public void dispose(){ 
    bolaTexture.dispose(); 
} 


@Override 
public void draw(Batch batch, float parentAlpha) { 
    Color col = getColor(); 
    batch.setColor(col.r,col.g, col.b,col.a * parentAlpha); 
    Gdx.app.log("App","where are you"); 
    batch.draw(ballTextureRegion,getX(),getY(),getOriginX(), 
    getOriginY(),getWidth(), getHeight(), getScaleX(), getScaleY(),getRotation()); 
} 

@Override 
public void act(float delta) { 
    super.act(delta); 
} 
} 

Ma classe d'écran étendu de l'écran:

public class scene extends scenebase { 

private final OrthographicCamera camera; 
private MyGdxGame game ; 
private Stage stage; // los Stages son inputprocessors 
private ActorBall ball; 

public scene(MyGdxGame game) { 
    super(game); 
    this.game = game; 


    camera = new OrthographicCamera(); 
    camera.setToOrtho(false, 800, 480); 

    stage = new Stage(new ScreenViewport()); 
    ball = new ActorBall(); 
    ball.setPosition(0,0); 
    stage.addActor(ball); 
} 

@Override 
public void render(float delta) { 
    // super.render(delta); 
    Gdx.gl.glClearColor(0,0,0.0f,1); 
    Gdx.gl.glClear (GL20.GL_COLOR_BUFFER_BIT); 

    camera.update(); 
    // game.batch.setProjectionMatrix(camera.combined); 

    stage.draw(); 
    stage.act(); 
} 

@Override 
public void resize(int width, int height) { 
    stage.getViewport().update (width,height); 

} 
} 

et dernier mon jeu principal:

public class MyGdxGame extends Game { 


private AssetManager manager; 
private scene screenscene; 

@Override 
public void create() { 
    manager = new AssetManager(); 
    manager.load("redball.png", Texture.class); 
    manager.finishLoading(); 


    // Enter the loading screen to load the assets. 
    screenscene = new scene(this); 
    setScreen(screenscene); 
} 

@Override 
public void render() { 
    super.render(); // This is very important!!!!!!!! 
    Gdx.gl.glClearColor(0, 0, 0.1f, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

} 


public AssetManager getManager() { 
    return this.manager; 
} 
} 

Répondre

3
@Override 
public void render() { 
    super.render(); // This is very important!!!!!!!! 
    Gdx.gl.glClearColor(0, 0, 0.1f, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
} 

Ce que cela fait est rendu d'abord tout et puis effacer l'écran. Vous devez d'abord effacer et ensuite rendre.

+0

Honte à moi, vous avez raison, merci beaucoup! – daniel