我对Libgdx中的方法sprite.setSize(float x, float y)
有疑问。它不会影响精灵的大小或尺寸。无论我传递给setSize()方法,它们都会保持固定。
这是我的代码:
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
}
}
你可以找到我的错误吗?
答案 0 :(得分:39)
问题解决了。
我必须使用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
方法。