libgdx之progressbar(进度条)slider(滑动条)

zqiang_55 zqiang_55     2022-11-28     426

关键词:

ProgressBar 即进度条,extends Widget。展示了在给定范围内时间/加载进度。PreferHeight是由给定的背景图片或者knob的最大高度决定的,默认的宽度width是140.

Slider 滑动条,一般在游戏中设置调节音量或者调节游戏难度等等。 Slider就是一水平的指示条,允许用户设值。Extends ProgressBar 因此也具有一个min max值,一个移动步调。
同理PreferHeight是由给定的背景图片或者knob的最大高度决定的,默认的宽度width是140。不同于ProgressBar,当移动Knob时ChangeEvent时间会被触发,我们可以在此做一些数值上的调整。

很不幸的是默认的uiskin.json文件中并不包含ProgressBarStyle 和SliderStyle,因此我们要自己定义了Style。


一直都是用badlogic的游戏图片,但是在这里确实不太好用,下面上传一下本次用到的图片




测试代码展示:

Stage stage;
    Texture progress_bar, knob_progress_bar;
    ProgressBar bar;

    float stateTime = 0;
    float count = 1f;
    boolean isCount = true;

    Texture slider_background, slider_knob;
    Slider slider;


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

        progress_bar = new Texture(Gdx.files.internal("progress_bar.png"));
        knob_progress_bar = new Texture(Gdx.files.internal("knob.png"));

        ProgressBar.ProgressBarStyle pbs = new ProgressBar.ProgressBarStyle();
        pbs.background = new TextureRegionDrawable(new TextureRegion(progress_bar));
        pbs.knob = new TextureRegionDrawable(new TextureRegion(knob_progress_bar));

        // 最小值是1 ,最大值是50,移动步数是1,那么总共移动50次
        bar = new ProgressBar(0f, 50, 1f, false, pbs);
        bar.setValue(count);
//      bar.setRotation(45);  由于ProgressBar的特殊性,单纯的旋转不起作用过,可以用下面方法
//      Group  group = new Group();
//      group.addActor(bar);
//      group.setRotation(45);
        // 设置运动的渐变速度,默认是Linear,不过有时候可设置先加载很快后期加载很慢的效果
        bar.setVisualInterpolation(Interpolation.exp10Out);
        bar.setPosition(Gdx.graphics.getWidth() / 2 - bar.getPrefWidth() / 2, Gdx.graphics.getHeight() / 2 - 20);
//      stage.addActor(bar);
//      stage.addActor(group);

        slider_background = new Texture(Gdx.files.internal("slider_background.png"));
        slider_knob = new Texture(Gdx.files.internal("slider_knob.png"));
        Slider.SliderStyle ss = new Slider.SliderStyle();
        ss.background = new TextureRegionDrawable(new TextureRegion(slider_background));
        ss.knob = new TextureRegionDrawable(new TextureRegion(slider_knob));
        slider = new Slider(0f, 10f, 1f, false, ss);
        slider.setPosition(bar.getX(), bar.getY() + bar.getHeight() + 40);
        slider.addListener(new ChangeListener() 

            @Override
            public void changed(ChangeEvent event, Actor actor) 
                Gdx.app.log("TAG", "slider changed to: " + slider.getValue());

            
        );
        stage.addActor(slider);
    

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

        stateTime += Gdx.graphics.getDeltaTime();
        // knob 每1秒钟移动一步, 移动到最大值knob自己停止,但是为了不再计数,加一个判断条件
        if (stateTime > 1 && count <= 50) 
            count++;
            stateTime = 0;
            bar.setValue(count);
        
        // 监听bar Value的值是否达到最大
        if (isCount && bar.getValue() == 50) 
            isCount = false;
            System.out.println("get max value");
        
        stage.act();
        stage.draw();
    

    @Override
    public void dispose() 
        progress_bar.dispose();
        knob_progress_bar.dispose();
        slider_background.dispose();
        slider_knob.dispose();
        stage.dispose();
    

libgdx之assetmanager资源管理器及进度条的实现

概述在前面我们用到的游戏资源,是直接加载的,由于只是一个demo,资源比较少,因此看不出时间用到的长短。实际上我们在游戏开发过程中用到的图片,声音等资源比较多,这时加载游戏过程中会出现... 查看详情

progressbar---进度条

...近在处理标题进度条时,耗费了一些时间,现在总结一下ProgressBar的相关知识,有不对的地方请大神们批评指正!进度条主要有以下三种:1.对话框进度条2.标题进度条  注意:requestWindowFeature(),setContentView(),setProgressBarIndete... 查看详情

gtk构件之杂项构件

GTK构件之杂项构件(2)1.进度条progressbar 进度条用于显示正在进行的操作的状态。创建进度条函数如下:GtkWidget*gtk_progress_bar_new(void) 创建进度条成功后,即可使用以下函数设置进度条显示比例和获取进度条百分比。/*获取进度条... 查看详情

progressbar(进度条)

本节引言:本节给大家带来的是Android基本UI控件中的ProgressBar(进度条),ProgressBar的应用场景很多,比如用户登录时,后台在发请求,以及等待服务器返回信息,这个时候会用到进度条;或者当在进行一些比较耗时的操作,需要等... 查看详情

[ue4]progressbar,进度条

...名为“testProgress”的UserWidget,添加一个名为“ProgressBar_0”的ProgressBar到默认容器CanvasPanel  二、进度条进行如图所示设置,其中DrawAs一般选中“Image”  三、更改不同的百分比,可以看到进度图片是逐渐展... 查看详情

如何显示progressbar的进度条,给分100

参考技术A还可以这样的:先设置max,min,step!然后用这个语:progressbar1.position:=progressbar1.position+n;其中的N为进度条的进度值前进量,在程序中要先设置或自动计算细分每次前进的量,保证运行正确! 查看详情

带 ProgressBar 的 CountDownTimer,重启应用时继续进度条

】带ProgressBar的CountDownTimer,重启应用时继续进度条【英文标题】:CountDownTimerwithProgressBar,continuingprogressbarwhenrestartingtheapp【发布时间】:2022-01-0922:32:13【问题描述】:我有一个显示CountdownTimer进度的ProgressBar。ProgressBar工作除了当... 查看详情

easyuidatagrid添加progressbar进度条

{field:‘shtgl‘,title:‘审核通过率‘,width:90,formatter:progressFormatter}function progressFormatter(value,row,index){ htmlstr=‘<div class="easyui-progressbar progressbar easyui-fluid"& 查看详情

如何给progressbar圆形进度条设置颜色

参考技术AAndroid中ProgressBar自定义进度条的高度、颜色、圆角很多人知道怎么改颜色,可是改高度就是胡扯了,居然想通过maxHeight去改。准确方法在这里:下面这个改成了3-5个dp高度:首先是样式文件,这里定义高度:本回答被... 查看详情

c#中progressbar进度条控件怎么开始???

progressbar进度条控件我设置了最大值最小值我要怎么启动这个控件?参考技术AC#中哪里有进度条哦,你说的是winform,还是webform,还是wpf啊。你的要求分明就是动画效果,在winform里面没有内置的支持,只有自己在时间嘀嗒到来的时... 查看详情

关于android怎么改变progressbar进度条颜色

参考技术A可以参考这个http://blog.csdn.net/hncjlxf/article/details/7280804 查看详情

android布局文件里的progressbar长形进度条怎么自定义样式

...bsp; 在windows操作系统下Androidstudio按照如下步骤自动义ProgressBar长形进度条的样式。1、首先创建一个android项目,打开其中的XML布局文件,如下图:2、添加ProgressBar控件,如下图:3、为ProgressBar控件添加样式,只需要添加如下... 查看详情

progressbar系统进度条案例

布局<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent 查看详情

c#进度条怎么用/c#progressbar的用法

...点击按钮【停止】,会重启进度条。参考技术A直接改变progressBar1.Value的值就能看到效果,范国是0~100。可以用订时器1000毫秒改变1次,progressBar1.Value 查看详情

progressbar进度条相关(代码片段)

XML:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.a 查看详情

libgdx之assetmanager资源管理器及进度条的实现

概述在前面我们用到的游戏资源,是直接加载的,由于只是一个demo,资源比较少,因此看不出时间用到的长短。实际上我们在游戏开发过程中用到的图片,声音等资源比较多,这时加载游戏过程中会出现... 查看详情

delphixeandroid更改progressbar1进度条颜色

...使用任务的长度是未知的。2、XML重要属性    android:progressBarStyle:默认进度条样式    android:progressBarStyleHorizontal:水平样式 3重要方法    getMax():返回这个进度条的范围的上限    getProgress():返回进度 ... 查看详情

c#中怎样改变进度条(progressbar)的颜色?

如题,我想改一下progressbar控件的颜色,该怎么改?先谢谢了!progressbar没有颜色的这个属性属性改变系统自带进度条的方法就是重绘了。具体方法如下:1.自定义控件继承自ProgressBar,如下:    public class CustomProgressBar : Prog... 查看详情