Render.ru

Вопрос про progressWindow

DEL

Активный участник
Рейтинг
15
#1
Привет!
Как использовать команду progressWindow? Тоесть как использовать на практике - привязать его к например временной шкале?
Например к этому :

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

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

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

alex_alv

Активный участник
Рейтинг
11
#2
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
 

DEL

Активный участник
Рейтинг
15
#3
Да, да, именно это! Спасобо большое! playButtonStepForward; это я скопировал прямо с скрипт эдитора :).
 

alex_alv

Активный участник
Рейтинг
11
#4
Если честно, то я ничего не знал про команду progressWindow
Я просто запустил майку, нажал Help -> MEL Command Reference,
прочитал и ответил Вам.

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

DEL

Активный участник
Рейтинг
15
#5
С хелпом я согласен, но с оговорками. Почти во всех примерах 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;
написать чтото вроде того , что написали вы или что нибудь попроще.
 

DEL

Активный участник
Рейтинг
15
#6
alex_alv
Немного поздно но все равно спрошу - почему вы написали оманду clamp,
ведь она фактически ничего не делает а только присваивает $j то же самое значение , которое уже имеет.
 

alex_alv

Активный участник
Рейтинг
11
#7
Так как Вы для позиционирования по времени используете 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;
 

alex_alv

Активный участник
Рейтинг
11
#8
Сори. Ошибся. Вместо Если $j меньше 100,... хотел написать Если $j меньше 0
 
Сверху