2014-11-03 14 views
6

Ho provato diverse soluzioni per disegnare cerchi con coordinate generate. Non funziona, ma non so qual è il problema con il metodo filledCircle? Come posso sostituirlo?LibGDX ShapeRenderer circle drawing

Messaggio:

FilledCircle non può essere risolto o non è un campo

Codice:

package com.example.game; 

import com.badlogic.gdx.ApplicationAdapter; 
import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.graphics.Color; 
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.glutils.ShapeRenderer; 
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; 

public class MainClass extends ApplicationAdapter { 
SpriteBatch batch; 
OrthographicCamera camera; 
ShapeRenderer shapeRenderer; 
private Sprite sprite;  

@Override 
public void create() { 
    shapeRenderer = new ShapeRenderer(); 
    batch = new SpriteBatch(); 
} 

@Override 
public void render() { 

    Gdx.gl.glClearColor(1, 1, 1, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    Gdx.gl.glEnable(GL20.GL_BLEND); 
    Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); 
    Gdx.gl.glDisable(GL20.GL_BLEND); 

     batch.setProjectionMatrix(camera.combined); 

     batch.begin(); 
     batch.draw(sprite, 200, 200, 64, 64); 
     shapeRenderer.begin(ShapeType.FilledCircle); 
     shapeRenderer.filledCircle(50, 50, 32); 
     shapeRenderer.setColor(Color.BLACK); 
     shapeRenderer.end(); 
     batch.end(); 
} 


} 

risposta

16

Il metodo begin(ShapeRenderer.ShapeType type) accetta un ShapeType. Ci sono 3 Shapetypes: Riempito, Linea e Punto. Non c'è FilledCircle come stai usando (questo è quello che ti dice il messaggio di errore).

Quindi, è necessario utilizzare shapeRenderer.begin(ShapeType.Filled);

Inoltre, non v'è filledCircle() metodo. Prova shapeRenderer.circle(50, 50, 32);.

EDIT:

Questo è il tuo codice senza alcuni degli errori. Dovrai capirlo e completare alcune parti, copia-incolla non lo farà.

@Override 
public void create() { 
    shapeRenderer = new ShapeRenderer(); 
    batch = new SpriteBatch(); 

    camera = new OrthographicCamera(300, 480); //FILL THE VALUES HERE 
    sprite = new Sprite(new Texture(Gdx.files.internal("badlogic.jpg"))); //FILL THE VALUES HERE 

    sprite.setBounds(200, 200, 64, 64); 
} 


@Override 
public void render() { 

    Gdx.gl.glClearColor(1, 1, 1, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    Gdx.gl.glEnable(GL20.GL_BLEND); 
    Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); 
    Gdx.gl.glDisable(GL20.GL_BLEND); 

     batch.setProjectionMatrix(camera.combined); 

     batch.begin(); 
     sprite.draw(batch); 
     batch.end(); 

     shapeRenderer.setColor(Color.BLACK); 
     shapeRenderer.begin(ShapeType.Filled); 
     shapeRenderer.circle(50, 50, 32); 
     shapeRenderer.end(); 
} 
+3

Nota che * usato * per essere metodi e tipi "filledCircle". Una delle pulizie precedenti alla 1.0.0 ha rimosso molta ridondanza dalla classe 'ShapeRenderer'. Probabilmente ci sono altre risposte SO che fanno ancora riferimento alla vecchia API. –

+0

Per riferimento: http://www.badlogicgames.com/wordpress/?p=2809 – Xoppa

+0

È apparentemente ok, ma ora c'è un'eccezione NullPointer alla riga 36. C'è un problema con il batch? Quale dovrebbe essere il problema? – plaidshirt