2014-01-27 18 views
17

У меня проблема с методом sprite.setSize(float x, float y) в Libgdx. Это не влияет на размер или размеры спрайта. Они остаются фиксированными независимо от того, что я передаю методу setSize().Как изменить размер спрайта в Libgdx?

вот мой код:

public class GameScreen implements Screen { 

    OrthographicCamera camera; 

    SpriteBatch batch; 
    Texture carTexture; 
    Sprite carSprite; 

    public GameScreen() 
    { 
    } 

    @Override 
    public void render(float delta) { 
     // TODO Auto-generated method stub 
     Gdx.gl.glClearColor(0,0,0,0); 
     Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
     batch.begin(); 
      carSprite.setSize(16, 32); 
      batch.draw(carSprite, 0 , 0); 
     batch.end(); 
     camera.update();  
} 

    @Override 
    public void resize(int width, int height) { 
     // TODO Auto-generated method stub 
     camera.viewportWidth=width; 
     camera.viewportHeight=height; 
     camera.update(); 
    } 

    @Override 
    public void show() { 
     // TODO Auto-generated method stub 
     camera = new OrthographicCamera(); 
     batch = new SpriteBatch(); 

     carTexture = new Texture(Gdx.files.internal("NetRace.png")); 
     carTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 

     carSprite = new Sprite(carTexture); 
    } 

    @Override 
    public void hide() { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void pause() { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void resume() { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void dispose() { 
     // TODO Auto-generated method stub 
    } 
} 

могли бы вы найти мою ошибку?

ответ

35

Проблема была решена.

мне пришлось использовать sprite.draw(batch); вместо использования Batch.draw(Sprite sp, float x, float y); так как метод Batch.draw(...) принимает текстуру из переданных спрайтов и использует текстуру в процессе вытягивания, который имеет фиксированную ширину и фиксированную высоту.

Другой способ решить эту проблему - использовать метод batch.draw(Sprite, float x, float y, float width, float height); в классе SpriteBatch.

+2

Спасибо за второй вариант. – kingAm

+0

@kingAm добро пожаловать. – Wazani

+0

Это решение также является решением другой проблемы: уменьшение размера Pixmap. Если вы используете функцию Sprite.setScale() вместо setSize(), она точно масштабирует Pixmap (завернутый в текстуру). Это была проблема: https://github.com/libgdx/libgdx/issues/2732#issuecomment-74154416 – jwehrle

Смежные вопросы