Libgdx之Label Image

本文深入探讨游戏开发与图像处理AR特效技术的实操应用,包括OpenGL ES滤镜、OpenCV图像处理、人像分割抠像、人体姿态估计等,通过实例解析提升读者对技术的理解与实践能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Label类

标签类,里面包裹了文字,可以定义文字显示的位置,排列方式等。主要在游戏中显示时间,分数等信息。
不知道些点啥就来个类图吧
这里写图片描述

注意: Libgdx中字体缩放是基于像素的,因此在使用Label是如果过度的缩小的Label或者是缩放字体时,绘制的文字会消失。因此最好Label是基于GUI坐标

Image类

注意: 如果你使用下面初始化方法:
image = new Image();
image.setDrawable(new TextureRegionDrawable(new TextureRegion(texture)));
要记得setSize或者setWidth/setHeight
image.setSize(image.getPrefWidth(), image.getPrefHeight());
否则由于width=height=0 image虽然绘制了但并不在屏幕上显示出来

下面是测试代码,注意看一下注释:

    Texture texture;
    Image image;
    Label label;

    Skin skin;
    Stage stage;
    int num;

    @Override
    public void create() {
        stage = new Stage();
        Gdx.input.setInputProcessor(stage);

        texture = new Texture("badlogic.jpg");
//      image = new Image(texture);
        image = new Image();
        image.setDrawable(new TextureRegionDrawable(new TextureRegion(texture)));
        image.setSize(image.getPrefWidth(), image.getPrefHeight());
        image.setPosition(20, 20);
//      将Image铺满屏幕
//      image.setFillParent(true);
        Gdx.app.log("TAG", "img width=" + image.getWidth() + "img preWidth=" + image.getPrefWidth());
        image.addListener(new ActorGestureListener() {

            @Override
            public void tap(InputEvent event, float x, float y, int count, int button) {
                image.setScale(0.5f);
                // 通过 此处的log可以看出缩放之后width和preWidth都不会发生变化
                Gdx.app.log("TAG", "img width=" + image.getWidth() + "img preWidth=" + image.getPrefWidth());
            }

        });
        stage.addActor(image);

        skin = new Skin(Gdx.files.internal("uiskin.json"));
        label = new Label("click tap", skin);
        Gdx.app.log("TAG", "width=" + label.getWidth() + "preWidth=" + label.getPrefWidth());
        label.setPosition(image.getX(), image.getY() + image.getHeight() + 10f);
        label.addListener(new ActorGestureListener() {

            @Override
            public void tap(InputEvent event, float x, float y, int count, int button) {
                num++;
                label.setText("click tap" + num);
                // 通过Log可以看出width就是初始化时候大小,随着字体的变化width不会变化,但是prewidth会发生变化
                Gdx.app.log("TAG", "width=" + label.getWidth() + "preWidth=" + label.getPrefWidth());
            }

        });
        stage.addActor(label);
    }

    @Override
    public void render() {
        Gdx.gl.glClearColor(0.39f, 0.58f, 0.92f, 1.0f);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        stage.act();
        stage.draw();
    }

    @Override
    public void dispose() {
        texture.dispose();
        skin.dispose();
    }

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值