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

mounten1

Пользователи
  • Публикации

    5
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем mounten1


  1. 26 минут назад, ProgramCrafter сказал:

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

     

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

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

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

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


  2. 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

     


  3. У меня есть функция, которая создаёт 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

     

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