J'ai un problème avec la méthode Sprite.setSize(float x, float y)
dans Libgdx. Cela n'affecte pas la taille ou les dimensions du Sprite. Ils restent fixes quoi que je passe à la méthode setSize ().
voici mon code:
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
}
}
pourriez-vous s'il vous plaît trouver mon erreur?
Le problème a été résolu.
J'ai dû utiliser Sprite.draw(batch);
au lieu d'utiliser Batch.draw(Sprite sp, float x, float y);
puisque la méthode Batch.draw(...)
prend la texture du Sprite passé et utilise la texture dans le processus de dessin qui a un fixe largeur et une hauteur fixe.
Une autre façon de résoudre ce problème consiste à utiliser la méthode batch.draw(Sprite, float x, float y, float width, float height);
dans la classe SpriteBatch
.