Sprite调整libGDX的大小

时间:2014-02-18 13:45:37

标签: java libgdx

我有一个精灵,我画了:

sprite.draw(spriteBatch);

这有效.... 我有两个恶意显示相同,但​​分辨率不同......

让我们说x1 = h:100px,x2 = h:200px

在精灵的非常包装类中,我有一个这样的方法:

public static void setSclae(float newScale, Sprite sprite) {
    // sprite.scale(newScale - sprite.getScaleX());
    sprite.setScale(newScale);
}

(我试过了两个,两个都没有工作)文档:http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Sprite.html#setScale(float)

在创建包装类时,我调用这样的函数:

setScale(setSide/(setWidth ? this.sprite.getBoundingRectangle().width : this.sprite.getBoundingRectangle().height));

setWidth =>布尔值(你想设置高度还是宽度?) 这个。精灵是一个精灵。起源@(0,0)

问题是:我想将高度设置为50px ...

对于x1:setScale(50/100) - > 0.5F

对于x2:setScale(50/200) - > 0.25F

为什么这段代码不起作用?

感谢您提供帮助

此致,

弗洛里安

PS:这里是包装类的构造函数:

 public Drawable(Sprite sprite, Vector2 position, Anchor anchor, float setSide, boolean setWidth, boolean flipH, boolean flipV) {
    this.sprite = new Sprite(sprite);
    this.sprite.setOrigin(0, 0);
    setPosition(anchor, position.x, position.y);
    setScale(setSide / (setWidth ? this.sprite.getBoundingRectangle().width : this.sprite.getBoundingRectangle().height));
    this.sprite.flip(flipV, flipH);
}

1 个答案:

答案 0 :(得分:0)

我会自己回答。我怎么解决了?我使用TexTureRegion实现了自己的“Sprites”类。你可能不需要一切。 Pastebin:http://pastebin.com/1Y25HFBm IGameObject接口如下。 [您不需要IIntersect接口......

import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public interface IGameObject {

public static enum Anchor {TopLeft, MiddleLeft, LowLeft, TopMiddle, MiddleMiddle, LowMiddle, TopRight, MiddleRight, LowRight}

public void Update(GameTime.GameTimeArgs gameTimeArgs);

public void Draw(SpriteBatch spriteBatch);

public void setPosition(Anchor a, float x, float y);

public void setScale(float newScale);

public String toString();
}

希望有所帮助:D

此致,

弗洛里安