Libgdx में बनावट दोहराएं


12

दोहराया बनावट के साथ क्षेत्र कैसे भरें? अब मैं अगली विधि का उपयोग कर रहा हूं:

spriteBatch.begin();

final int tWidth = texture.getWidth();
final int tHeight = texture.getHeight();

for (int i = 0; i < regionWidth / tWidth; i++) {
    for (int k = 0; k < regionHeight / tHeight; k++) {
        spriteBatch.draw(texture, i*tWidth, k);
    }
}

spriteBatch.end();

यह बहुत स्पष्ट है। शायद वहाँ किसी भी विधि में बनाया गया है?

जवाबों:



3

आप अपनी बनावट पर "SetWrap" का उपयोग कर सकते हैं और उस बनावट के आधार पर एक TextureRegion बना सकते हैं। एक 3x3 प्रतिबिम्बित छवि (या अक्षीय आकार) बनाने के लिए

Texture imgTexture = new Texture(Gdx.files.internal("badlogic.jpg"));
imgTexture.setWrap(Texture.TextureWrap.MirroredRepeat, Texture.TextureWrap.MirroredRepeat);
TextureRegion imgTextureRegion = new TextureRegion(imgTexture);
imgTextureRegion.setRegion(0,0,imgTexture.getWidth()*3,imgTexture.getHeight()*3);

महत्वपूर्ण: मुझे यह पता लगाने में थोड़ा समय लगा, लेकिन प्रतिबिंबित होने के लिए, आपकी बनावट दो आकार की शक्ति होनी चाहिए। यह एंड्रॉइड पर काम कर रहा था लेकिन iOS पर नहीं और आपको एक संदेश नहीं मिला - यह काले रंग में दिखाया गया था। तो यह 4x4 या 8x8, 16x16 .. 256x256 या 512x512 होना चाहिए।

आपको यह देगा: यहाँ छवि विवरण दर्ज करें

नीचे आप उस नमूना कोड को देख सकते हैं जो उस तस्वीर को स्टेज और इमेज एक्टर (Scene2D) का उपयोग करके उत्पन्न करता है

public class GameScreen implements Screen {

    MyGdxGame game;
    private Stage stage;

    public GameScreen(MyGdxGame aGame){
        stage = new Stage(new ScreenViewport());
        game = aGame;
        Texture imgTexture = new Texture(Gdx.files.internal("badlogic.jpg"));
        imgTexture.setWrap(Texture.TextureWrap.MirroredRepeat, Texture.TextureWrap.MirroredRepeat);
        TextureRegion imgTextureRegion = new TextureRegion(imgTexture);
        imgTextureRegion.setRegion(0,0,imgTexture.getWidth()*3,imgTexture.getHeight()*3);

        TextureRegionDrawable imgTextureRegionDrawable = new TextureRegionDrawable(imgTextureRegion);
        Image img = new Image();
        img.setDrawable(imgTextureRegionDrawable);
        img.setSize(imgTexture.getWidth()*3,imgTexture.getHeight()*3);
        stage.addActor(img);
    }

    @Override
    public void show() {

    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        stage.act(delta);
        stage.draw();
    }

    @Override
    public void resize(int width, int height) {
        stage.getViewport().update(width, height, true);
    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {

    }

    @Override
    public void hide() {

    }

    @Override
    public void dispose() {
        stage.dispose();
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.