2014-11-03 75 views
6

我已经尝试了几种解决方法来绘制圆来生成坐标。 它不工作,但我不知道fillCircle方法有什么问题?我该如何更换它?LibGDX ShapeRenderer圆形图

消息:

FilledCircle不能得到解决或不是一个场

代码:

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


} 

回答

16

begin(ShapeRenderer.ShapeType type)接受ShapeType的方法。有3 Shapetypes:填充,线和点。没有像您使用的FilledCircle(这是错误消息告诉你的)。

所以,你应该用shapeRenderer.begin(ShapeType.Filled);

而且,没有filledCircle()方法。尝试shapeRenderer.circle(50, 50, 32);

编辑

这是没有的一些失误代码。你需要了解它并完成一些部分,复制粘贴不会这样做。

@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

请注意,*使用*为“filledCircle”的方法和类型。其中一个1.0.0之前的清理从“ShapeRenderer”类中删除了很多冗余。有可能还有其他的答案,仍然指的是旧的API。 – 2014-11-03 16:38:31

+0

仅供参考:http://www.badlogicgames.com/wordpress/?p = 2809 – Xoppa 2014-11-03 16:51:27

+0

这似乎没问题,但是现在第36行有一个NullPointer异常。批处理有问题吗?应该是什么问题? – plaidshirt 2014-11-04 07:52:10