Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在LibGDX中创建时间条?_Java_Timer_Libgdx_Progress Bar - Fatal编程技术网

Java 如何在LibGDX中创建时间条?

Java 如何在LibGDX中创建时间条?,java,timer,libgdx,progress-bar,Java,Timer,Libgdx,Progress Bar,我正在编写一个游戏,想添加一个时间条(一个随着时间推移而减少的时间条)。 游戏基本上是,一些敌人来自一边,你必须打他们。所以,当你打一个,时间条必须增加一点。任何帮助都将不胜感激。谢谢。我将从我的小框架中添加一些代码,这些代码不会单独工作,您必须做一些更改,但至少会妨碍您的工作 public class ProgressBar extends UIitem { public Sprite sprite,sprite2; public boolean visible=true;

我正在编写一个游戏,想添加一个时间条(一个随着时间推移而减少的时间条)。
游戏基本上是,一些敌人来自一边,你必须打他们。所以,当你打一个,时间条必须增加一点。任何帮助都将不胜感激。谢谢。

我将从我的小框架中添加一些代码,这些代码不会单独工作,您必须做一些更改,但至少会妨碍您的工作

public class ProgressBar extends UIitem {

    public Sprite sprite,sprite2;
    public boolean visible=true;


    //texture is the progress bar (the one that decreases and background is the background texture of the progress bar
    public ProgressBar(float x, float y, float sizex, float sizey, Texture texture,Texture background) {
        pos = new Vector(x, y);
        size = new Vector(sizex, sizey);
        sprite = new Sprite(texture);
        sprite2 = new Sprite(background);
        color = new gColor(1, 1, 1, 1);
    }

    float timeon=0;

    float progress,orogressMb;
    public float getProgress() {
        return orogressMb;
    }
    public void setProgress(float p){
        orogressMb=p;
        if(orogressMb>1)orogressMb=1;
        else if(orogressMb<0)orogressMb=0;
    }

    @Override
    public void Render(SpriteBatch sb) {
        if(!visible)return;

        sprite2.setColor(color.r, color.g, color.b, color.a);
        sprite2.setRotation(0);
        sprite2.setPosition(getPos().x - getSize().x * scaleup / 2, getPos().y- getSize().y * scaleup / 2);
        sprite2.setSize(getSize().x * scaleup, getSize().y * scaleup);
        sprite2.setOrigin((getSize().x * scaleup) / 2,(getSize().y * scaleup) / 2);
        sprite2.draw(sb);

        sprite.setColor(color.r, color.g, color.b, color.a);
        sprite.setRotation(0);
        sprite.setRegion(0, 0, progress, 1);
        sprite.setSize((getSize().x * scaleup)*progress, getSize().y * scaleup);
        sprite.setPosition(getPos().x-getSize().x/2, getPos().y- getSize().y * scaleup / 2);
        sprite.setOrigin((getSize().x * scaleup) / 2,(getSize().y * scaleup) / 2);
        sprite.draw(sb);

        timeon+=Gdx.graphics.getDeltaTime();
        if(timeon>0.5f){
            progress+=((orogressMb-progress)/10)*Director.delta;
        }
    }

}
公共类ProgressBar扩展UIitem{
公共雪碧雪碧,雪碧2;
公共布尔可见=真;
//纹理是进度条(减少的纹理和背景是进度条的背景纹理)
公共进度条(浮动x、浮动y、浮动sizex、浮动sizey、纹理纹理、纹理背景){
pos=新向量(x,y);
大小=新向量(sizex,sizey);
雪碧=新雪碧(纹理);
sprite2=新的Sprite(背景);
颜色=新的gColor(1,1,1,1);
}
float timeon=0;
浮动进度,orogressMb;
公共进度(){
返回orogressMb;
}
公共进度(浮动p){
orogressMb=p;
如果(orogressMb>1)orogressMb=1;
否则如果(orogressMb0.5f){
进度+=((orogressMb进度)/10)*Director.delta;
}
}
}

您已经做了什么?通常编写您自己的组件是明智的。我还没有写任何关于时间和您现在对我们的期望的内容。由于没有提供代码或明确的问题,我假设您需要一种方法。因此我的建议是:编写您的组件(例如扩展堆栈)覆盖渲染方法或只是使用progressbarI希望有人能用一个例子或其他东西把我引向正确的方向。我尝试使用progressbar,但它的行为不同