2014-11-03 83 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