Перейти к содержимому
  • 0
mounten1

Обновляется только один progressbar.

Вопрос

У меня есть функция, которая создаёт progressbar:

function progressbar(value, x, y, text, update)



Если использовать один progressbar, то всё работает. Но если создать два progressbar'a, то новые значения объявляются только на втором progressbar'e в цикле. Без цикла вроде всё нормально работает.
Почему так происходит?

Кусок кода:
 

local p_energy = progressbar(value_energy, 15, 25, energy_reactor, 0)
local p_heat = progressbar(value_heat, 15, 50, heat_reactor, 0)

while i < 1 do
//...
p_energy = progressbar(value_energy, 15, 25, energy_reactor, 1)
p_heat = progressbar(value_heat, 15, 50, heat_reactor, 1)
//...
end

 

Изменено пользователем mounten1
Ложный P.S

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

А какой код у функции progressbar? Возможно, она просто не очищает пустое место в прогрессбаре.

 

Ещё подозрительно, что переменные p_energy и p_heat постоянно перезаписываются новыми значениями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
37 минут назад, ProgramCrafter сказал:

А какой код у функции progressbar? Возможно, она просто не очищает пустое место в прогрессбаре.

 

Ещё подозрительно, что переменные p_energy и p_heat постоянно перезаписываются новыми значениями.

function progressbar(value, x, y, text, update)
    if update == 0 then
    border1 = glassesTerminal.addBox2D();
    border1.setSize(100, 1)
    border1.addTranslation(x, y-1, 0)
    border1.addColor(0, 0, 0, 1)
    border1.addColor(0, 0, 0, 1)

    border2 = glassesTerminal.addBox2D();
    border2.setSize(100, 1)
    border2.addTranslation(x, y+15, 0)
    border2.addColor(0, 0, 0, 1)
    border2.addColor(0, 0, 0, 1)

    border3 = glassesTerminal.addBox2D();
    border3.setSize(1, 15)  
    border3.addTranslation(x-1, y, 0)
    border3.addColor(0, 0, 0, 1)
    border3.addColor(0, 0, 0, 1)

    border4 = glassesTerminal.addBox2D();
    border4.setSize(1, 15)
    border4.addTranslation(x+100, y, 0)
    border4.addColor(0, 0, 0, 1)
    border4.addColor(0, 0, 0, 1)


    bar = glassesTerminal.addBox2D();
    bar.setSize(value, 15)
    bar.addTranslation(x, y, 0)
    if value >= 90 then
            bar.addColor(1, 0, 0, 0.5)
            bar.addColor(1, 0, 0, 0.5)        
        else
            bar.addColor(0, 1, 0, 0.5)
            bar.addColor(0, 1, 0, 0.5)
    end

    text_p = glassesTerminal.addText2D()
    text_p.setText(text)
    text_p.setFont("")
    text_p.setFontSize(8)
    text_p.addTranslation(x+5, y+2.5, 0)
    end

    if update == 1 then
        text_p.setText(text)
        bar.setSize(value, 15)
        if value >= 90 then
            bar.addColor(1, 0, 0, 0.5)
            bar.addColor(1, 0, 0, 0.5)        
        else
            bar.addColor(0, 1, 0, 0.5)
            bar.addColor(0, 1, 0, 0.5)
    end
    end
end

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Судя по коду, переменные border1, ..., border4, bar и text_p глобальные.

 

При первом вызове функции для первого прогрессбара компоненты создаются и записываются в глобальные переменные.

При первом вызове для второго прогрессбара новые компоненты записываются поверх старых в те же переменные.

После этого на каждом этапе обновляется только второй прогрессбар, первый остаётся на месте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
26 минут назад, ProgramCrafter сказал:

Судя по коду, переменные border1, ..., border4, bar и text_p глобальные.

 

При первом вызове функции для первого прогрессбара компоненты создаются и записываются в глобальные переменные.

При первом вызове для второго прогрессбара новые компоненты записываются поверх старых в те же переменные.

После этого на каждом этапе обновляется только второй прогрессбар, первый остаётся на месте.

Сделал переменные локальные, но не помогло

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...