我有一张应该有棋盘背景的桌子。为此,我使用像这样的平铺drawable:
TiledDrawable boardBg;
boardBg = new TiledDrawable(menuSkin.getTiledDrawable("boardBg"));
boardTable.setBackground(boardBg);
然后每个瓷砖都具有可绘制的尺寸,例如64px。我需要做什么才能使每个瓷砖更大?我试过了
boardBg.setMinWidth(500);
boardBg.setMinHeight(500);
但这没有任何效果。
答案 0 :(得分:0)
TiledDrawable类不支持缩放我创建了一个扩展TiledDrawable并可以缩放的类。你最好不要缩小0.1以上,这将是一个性能值(取决于纹理的大小)。因此在缩小时要小心使用。注意我没有考虑当比例设置为零时所以可能创建一个方法setScale,它会在发生错误时抛出错误。像这样使用ScaledTiledDrawable:
ScaledTiledDrawable scaledTiledDrawable = new ScaledTiledDrawable( new TextureRegion( texture ) );
scaledTiledDrawable.getScale().set( 0.5f, 0.5f );
这是班级:
public class ScaledTiledDrawable extends TiledDrawable {
private Vector2 scale = new Vector2();
private Affine2 transform = new Affine2();
private Matrix4 matrix = new Matrix4();
private Matrix4 oldMatrix = new Matrix4();
public ScaledTiledDrawable() {
super();
}
public ScaledTiledDrawable( TextureRegion region ) {
super( region );
}
public ScaledTiledDrawable( TextureRegionDrawable drawable ){
super( drawable );
}
public Vector2 getScale() {
return scale;
}
@Override
public void draw( Batch batch, float x, float y, float width, float height ) {
oldMatrix.set( batch.getTransformMatrix() );
matrix.set( transform.setToTrnScl( x, y, scale.x, scale.y ) );
batch.setTransformMatrix( matrix );
super.draw( batch, 0, 0, width / scale.x, height / scale.y );
batch.setTransformMatrix( oldMatrix );
}
}