java - 如何设置平铺可绘制对象的大小

标签 java android libgdx

我有一张应该有棋盘背景的 table 。为此,我像这样使用平铺可绘制对象:

TiledDrawable boardBg;
boardBg = new TiledDrawable(menuSkin.getTiledDrawable("boardBg"));
boardTable.setBackground(boardBg);

然后每个图 block 都具有默认情况下可绘制对象的大小,比如 64px。我必须做什么才能使每个图 block 更大?我试过了

boardBg.setMinWidth(500);
boardBg.setMinHeight(500);

但这没有任何效果。

最佳答案

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 );
    }
}

关于java - 如何设置平铺可绘制对象的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21647419/

相关文章:

java - Gradle 似乎什么都不做

java - JFileChooser 对话框,搞砸了

java - Documentum:ORDER_BY r_modify_date 花费的时间太长

android - 如何在 Activity 之间切换

android - 为所有 fragment 保留相同的操作栏

java - 敌方物体不会移动 LibGDX

java - maven-antrun-plugin 跳过执行

java - twitter4j.TwitterException : 401:Authentication credentials were missing or incorrect

android - Edittext android 自动对焦

java - 如何将碰撞盒置于旋转三角形 Sprite 内的中心?