2014-11-03 7 views
6

मैंने जेनरेट किए गए निर्देशांक में मंडलियों को आकर्षित करने के लिए कई समाधानों का प्रयास किया है। यह काम नहीं कर रहा है, लेकिन मुझे नहीं पता कि fillCircle विधि में समस्या क्या है? मैं इसे कैसे बदल सकता हूं?LibGDX आकार प्रस्तुतकर्ता सर्कल ड्राइंग

संदेश:

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

ध्यान दें कि * * इस्तेमाल किया गया "भरने के लिए" विधि और प्रकार। प्री-1.0.0 क्लीनअप में से एक ने 'आकार ट्रांसफरर' वर्ग से बहुत सी अनावश्यकता को हटा दिया। शायद अन्य SO उत्तर हैं जो अभी भी पुरानी एपीआई का संदर्भ लेते हैं। –

+0

संदर्भ के लिए: http://www.badlogicgames.com/wordpress/?p=2809 – Xoppa

+0

यह ठीक है, लेकिन अब लाइन 36 पर एक NullPointer अपवाद है। क्या बैच के साथ कोई समस्या है? समस्या क्या होनी चाहिए? – plaidshirt