1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Вопрос про progressWindow

Тема в разделе "Maya", создана пользователем DEL, 26 май 2009.

Модераторы: Dark™, Skif
  1. DEL

    DEL Активный участник

    С нами с:
    20.04.2005
    Сообщения:
    380
    Симпатии:
    0
    Баллы:
    13
    Привет!
    Как использовать команду progressWindow? Тоесть как использовать на практике - привязать его к например временной шкале?
    Например к этому :

    for($i=0;$<=100;$i++)
    {
    playButtonStepForward;
    }

    Сделать так, что бы -status показывал значения кадра, это значит, когда бегунок на временной шкале находится допустим на кадре
    10 в окне прогресса отображалось то же самое значение.

    В нете очень мало инфы на сабж а в примерах хелпа не описываются их практическое использование, по крайней мере я их не понимаю :).
     
  2. alex_alv

    alex_alv Активный участник

    С нами с:
    23.04.2008
    Сообщения:
    150
    Симпатии:
    0
    Баллы:
    14
    int $i,$j;
    progressWindow -min 0 -max 100;
    for($i=0;$i<=100;$i++)
    {
    playButtonStepForward;
    $j=`currentTime -q`;
    $j=clamp(0,100,$j);
    progressWindow -e -pr $j -st $j;
    }
    progressWindow -ep;

    Это имеется в виду? Кстати, можно вместо playButtonStepForward использовать currentTime в режиме -e
     
  3. DEL

    DEL Активный участник

    С нами с:
    20.04.2005
    Сообщения:
    380
    Симпатии:
    0
    Баллы:
    13
    Да, да, именно это! Спасобо большое! playButtonStepForward; это я скопировал прямо с скрипт эдитора :).
     
  4. alex_alv

    alex_alv Активный участник

    С нами с:
    23.04.2008
    Сообщения:
    150
    Симпатии:
    0
    Баллы:
    14
    Если честно, то я ничего не знал про команду progressWindow
    Я просто запустил майку, нажал Help -> MEL Command Reference,
    прочитал и ответил Вам.

    И пусть эта фраза уже всем здесь надоела, но отсюда мораль:
    читайте хелп. Там есть ответы на все вопросы.
    У майки очень хороший хелп. Я не видел других программ с таким хорошим хелпом.
     
  5. DEL

    DEL Активный участник

    С нами с:
    20.04.2005
    Сообщения:
    380
    Симпатии:
    0
    Баллы:
    13
    С хелпом я согласен, но с оговорками. Почти во всех примерах UI не указано практическое использование команды. Ведь не трудно сделать это. Хелп про эту команду я читал, но мне и в голову не приходило использовать кламп, хотя мне эта команда знакома и я не раз ее использовал. Можно было вместо

    Код:
    // Always use the progress dialog from a script, never directly
    // from the Script Editor.
    
         int $amount = 0;
    
         progressWindow
             -title "Doing Nothing"
             -progress $amount
             -status "Sleeping: 0%"
             -isInterruptable true;
    
         while (true) {
    
             // Check if the dialog has been cancelled
             if ( `progressWindow -query -isCancelled` ) break;
    
             // Check if end condition has been reached
             if ( `progressWindow -query -progress` >= 100 ) break;
    
             $amount += 5;
    
             progressWindow -edit
                 -progress $amount
                 -status ("Sleeping: "+$amount+"%");
    
             pause -seconds 1;
         }
    
         progressWindow -endProgress;
    написать чтото вроде того , что написали вы или что нибудь попроще.
     
  6. DEL

    DEL Активный участник

    С нами с:
    20.04.2005
    Сообщения:
    380
    Симпатии:
    0
    Баллы:
    13
    alex_alv
    Немного поздно но все равно спрошу - почему вы написали оманду clamp,
    ведь она фактически ничего не делает а только присваивает $j то же самое значение , которое уже имеет.
     
  7. alex_alv

    alex_alv Активный участник

    С нами с:
    23.04.2008
    Сообщения:
    150
    Симпатии:
    0
    Баллы:
    14
    Так как Вы для позиционирования по времени используете playButtonStepForward вместо currentTime, то я не могу быть уверенным, что мы находимся в кадре, номер которого от 0 до 100.
    Чтобы ProgresWindow не выводил в тексте число, выходящее за этот диапазон, я после опроса, какой сейчас кадр, вызываю
    $j=clamp(0,100,$j);
    Эта функция не меняет $j, если она находится в диапазоне от 0 до 100. Если $j меньше 100, она устанавливает ее в 0. Если она больше 100, она устанавливает ее в 100.
    Т. е. строка $j=clamp(0,100,$j); эквивалентна следующим строкам:
    if($j<0)$j=0;
    if($j>100)$j=100;
     
  8. alex_alv

    alex_alv Активный участник

    С нами с:
    23.04.2008
    Сообщения:
    150
    Симпатии:
    0
    Баллы:
    14
    Сори. Ошибся. Вместо Если $j меньше 100,... хотел написать Если $j меньше 0
     
  9. DEL

    DEL Активный участник

    С нами с:
    20.04.2005
    Сообщения:
    380
    Симпатии:
    0
    Баллы:
    13
    Кнопка "спасибо" не работает. Спасибо!
     
Модераторы: Dark™, Skif

Поделиться этой страницей