2014-11-03 26 views
6

Oluşturulan koordinatlara daire çizmek için birkaç çözüm denedim. Çalışmıyor, ancak filledCircle yöntemiyle ilgili sorunun ne olduğunu bilmiyorum. Nasıl değiştirebilirim?LibGDX ShapeRenderer daire çizimi

Mesaj:

FilledCircle çözülemeyen veya sahadan değildir olabilir

Kodu:

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


} 

cevap

16

bir ShapeType kabul begin(ShapeRenderer.ShapeType type) yöntemi. 3 Shapetypes: Dolgulu, Çizgi ve Nokta vardır. Kullandığınız gibi FilledCircle yoktur (hata mesajının size söylediği şey budur).

Yani, filledCircle() yöntem yoktur, ayrıca

shapeRenderer.begin(ShapeType.Filled); kullanmalıdır. shapeRenderer.circle(50, 50, 32);'u deneyin.

DÜZENLEME:

Bu hataların bazıları olmadan kodudur. Anlamanız ve bazı bölümleri tamamlamanız gerekecek, kopyala-yapıştır bunu yapmayacaktır.

@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

Not * orada * "filledCircle" yöntemleri ve türleri kullanılır. Ön-1.0.0 temizlemelerinden biri, 'ShapeRenderer' sınıfından çok fazla artıklık çıkardı. Yine de eski API'ye başvuran diğer SO yanıtları vardır. –

+0

Başvuru için: http://www.badlogicgames.com/wordpress/?p=2809 – Xoppa

+0

Şimdi tamam, ama şimdi 36 numaralı satırda bir NullPointer istisnası var. Toplu bir sorun var mı? Sorun ne olmalı? – plaidshirt