2014-11-03 6 views
6

Ich habe mehrere Lösungen zum Zeichnen von Kreisen zu generierten Koordinaten ausprobiert. Es funktioniert nicht, aber ich weiß nicht, was das Problem mit filledCircle-Methode ist? Wie kann ich es ersetzen?LibGDX ShapeRenderer Kreiszeichnung

Nachricht:

FilledCircle nicht aufgelöst werden kann oder kein Feld

Code:

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(); 
} 


} 

Antwort

16

Verfahren begin(ShapeRenderer.ShapeType type) ein ShapeType akzeptiert. Es gibt 3 Shapetypes: Gefüllt, Linie und Punkt. Es gibt keine FilledCircle wie Sie verwenden (das ist, was die Fehlermeldung Ihnen sagt).

Also, sollten Sie shapeRenderer.begin(ShapeType.Filled);

auch verwenden, gibt es nicht filledCircle() Methode. Versuchen Sie shapeRenderer.circle(50, 50, 32);.

EDIT:

Dies ist der Code, ohne einige der Fehler. Sie müssen es verstehen und einige Teile vervollständigen, Copy-Paste wird es nicht tun.

@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

Beachten Sie, dass * verwendet * zu "filledCircle" Methoden und Typen. Eine der Bereinigungen vor 1.0.0 entfernte eine Menge Redundanz aus der 'ShapeRenderer' Klasse. Es gibt wahrscheinlich andere SO-Antworten, die sich immer noch auf die alte API beziehen. –

+0

Als Referenz: http://www.badlogicgames.com/wordpress/?p=2809 – Xoppa

+0

Es ist in Ordnung, aber jetzt gibt es eine NullPointer-Ausnahme in Zeile 36. Gibt es ein Problem mit Batch? Was sollte das Problem sein? – plaidshirt