2016-04-17 5 views
1

Я искал для себя помощь некоторое время. Наконец, кажется, что быстрее спросить, чем продолжать охоту.Libgdx Scene2d Progress Bar никогда не пуст

Progress bar not empty at 0 value

Здесь мы можем видеть, что даже при значении 0, ручка индикатора выполнения остается видимым. Поскольку игрок мертв, это должно быть пустым. Я бы очень хотел использовать класс stage2d progressbar, у кого есть какие-то подсказки?

Вот код для индикатора выполнения:

healthbarTex = new Texture(Gdx.files.internal("Spritesheets/healthbar.png")); 

textureBar = new TextureRegionDrawable(new TextureRegion(healthbarTex)); 

ProgressBar.ProgressBarStyle barStyle = new ProgressBar.ProgressBarStyle(skin.newDrawable("white", Color.DARK_GRAY), textureBar); 

barStyle.knobBefore = barStyle.knob; 

barStyle.background = skin.newDrawable("white", Color.BLACK); 

bar = new ProgressBar(0, 100, .5f, false, barStyle); 

//Animate duration is how slow the bar moves when updated 

bar.setAnimateDuration(1); 

bar.setWidth(100); 

ответ

0

У меня была точно такая же проблема, как и прогресс бар просто слайдер, он ставит планку на 0. как я решил это было создание точная копия healthbar.png (те же размеры) в графическом редакторе, но сделать это transarent пустой PNG

invisHealthbarTex = new Texture(Gdx.files.internal("Spritesheets/invishealthbar.png")); 

invisTextureBar = new TextureRegionDrawable(new TextureRegion(invisHealthbarTex)); 

Затем, когда вы обновляете ваш прогресс бар, если getValue() является 0, установите bar.getStyle().knob = invisTextureBar еще установить его в textureBar.

onUpdate(float val) 
{ 
    if (val == 0) 
    { 
     bar.getStyle().knob = invisTextureBar; 
    } 
    else 
    { 
     bar.getStyle().knob = textureBar; 
    } 

    bar.getStyle().knobBefore = bar.getStyle().knob; 

    bar.setValue(val); 
} 
+0

Отлично, спасибо! Это даже упростит добавление мигающих эффектов в панель здоровья! – Fosa

Смежные вопросы