Libgdx之ProgressBar (进度条) Slider(滑动条)

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

时间: 2024-10-08 09:08:30

Libgdx之ProgressBar (进度条) Slider(滑动条)的相关文章

疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条

http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程java任务timerstring 2009-01-16 21:12 6722人阅读 评论(0) 收藏 举报  分类: J2SE(63)  版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天讲了Swing基本的控件,今天开始讲特殊控件.一天讲2个吧,首先讲用JProgressBar,Pro

android进度条、滑动条和评分控件

所谓进度条.滑动条和评分控件,在手机应用中,相信你见过加载游戏时.更新应用时等情况,屏幕出现一条进度栏,这里称之为进度条:当你调节音量时出现的这里即称作滑动条:而评分控件,当你在淘宝给卖家评价时出现的类似5星评价,这里即称作评分控件,下面将分别详细说明这三种控件的基础使用方法. 一.ProgressBar进度条控件 1. 首先ProgressBar进度条给出了两种样式,分别是progressBarStyleLarge和progressBarStyleHorizontal,此次主要以progres

进度条和滑动条

1 #import "ViewController.h" 2 #import "ViewController2.h" 3 4 @interface ViewController () 5 6 @end 7 8 @implementation ViewController 9 10 @synthesize slider = _slider; 11 @synthesize pView = _progressView; 12 13 - (void)viewDidLoad

使用NGUI制作进度条(血条/蓝条)

制作血条和蓝条,原理都是一样的,下面创建一个可以复用的进度条. 第一步,搭建基本的UI显示界面,使用NGUI(没有插件的童鞋可以看我上一遍文章 )创建一个基本的进度条界面. 选中UIRoot,在Scene视图中,创建一个Sprite,重命名为NumberBar,为其选择图集和精灵,修改其大小到合适位置(256* 32).在其上右键,Attach一个Box Collider,然后再右键Attach一个Slider Script.我们会看到Slider组件会有些参数,我们会在稍后解释. 选中刚创建的

[转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件

作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律责任. 本篇要登场的有三个控件,分别是滚轴控件.进度条控件和编辑控件. 一.滚轴控件 Ext.slider 1.滚轴控件的定义 下面我们定义三个具有代表意义滚轴控件,分别展示滚轴横向.纵向,以及单值.多值选择的特性: [html] <h1>滚轴控件</h1> <div class

10 Slider控件(滑动条)

学习笔记,如有错误请指正.?号处也请各位指点下,谢谢. 滑动条由4个部分组成:Slider(本体).Background(背景).Fill(填充)以及Handle(滑动柄) Fill Rect:填充区域,填充Rect Transform,通常为Image元素 Handle Rect:拖动的柄,填充Rect Transform,通常为Image元素 Direction:方向,有LeftToRight(从左至右)RightToLeft(从右至左).TopToBottom(从上至下)和BottomTo

EasyUI系列学习(八)-ProgressBar(进度条)

一.创建组件 1.class加载 <div class="easyui-progressbar"></div> 2.js加载 <div id="pb"></div> <script> $(function () { $("#pb").progressbar(); }) </script> 二.属性 <div id="pb"></div&g

Unity3D 之UGUI 滑动条(Slider)

这里来讲解下UGUI 滑动条(Slider)的用法 控件下面有三个游戏对象 Background -->背景 Fill Area --> 前景区域 Handle Slide Area --> 滑动条 Slider的属性 其他几个设置和其他控件都差不多,这里来讲解几个特有的属性. Direction -->方向 Whole Numbers -->控制整数输入 然后来看下脚本控制.这里的方法调用和其他的不用,方法里面有浮点参数 using UnityEngine; using S

Android基础入门教程——2.3.7 ProgressBar(进度条)

Android基础入门教程--2.3.7 ProgressBar(进度条) 标签(空格分隔): Android基础入门教程 本节引言: 本节给大家带来的是Android基本UI控件中的ProgressBar(进度条),ProgressBar的应用场景很多,比如 用户登录时,后台在发请求,以及等待服务器返回信息,这个时候会用到进度条:或者当在进行一些比较 耗时的操作,需要等待一段较长的时间,这个时候如果没有提示,用户可能会以为程序Carsh或者手机死机 了,这样会大大降低用户体验,所以在需要进行耗