안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
함수 설명을 하느라 잠시 동안 UI 관련 이야기를 진행하지 못했습니다.
그럼 다시 UI설명을 하도록 하겠습니다.
오늘은 맥스의 스크립트 UI인 ProgressBar를 이야기하겠습니다.
ProgressBar는 진행률을 표시하는 UI입니다.
가끔 많은 양의 맥스 파일을 순차적으로 조작하는 경우가 있습니다.
100개 정도 되는 파일이 있다면, 이 작업이 언제 끝나는지 알기 어렵습니다.
그때 진행 정도를 막대그래프로 표시하면 정확하게는 아니지만 어느 정도 작업이 진행됐는지를 알 수 있습니다.
문법
progressBar <name> [value:<number>] [color:<color>] [orient:<name>]
[value:<number>]는 진행 정도를 0 ~ 100까지의 수치로 표시할 수 있습니다. 기본은 0입니다.
[color:<color>]는 ProgressBar의 색을 정할 수 있습니다.
[orient:<name>]는 ProgressBar의 모양이 가로 일지 세로 일지를 정합니다.
그럼 만들어 볼까요? 다음과 같이 입력하여 실행해 봅시다.
1
2
3
4
5
6
|
rollout testRoll "Test!"
(
progressBar test1_pgb value:50 color:(color 0 0 255)
progressBar test2_pgb value:50 color:red orient:#vertical width:15 height:100
)
createdialog testRoll
|
cs |
test1_pgb는 가로로 파란색이고 test2_pgb는 세로로 빨간색입니다.
test1_pgb는 progressBar의 진행률을 50(반)으로 하고 색상은 칼라형으로 파란색을 표기했습니다.
orient의 설정을 생략했기 때문에 가로형태입니다.
test2_pgb는 progressBar의 진행률을 50(반)으로 하고 색상은 미리 약속한 칼라 형으로 빨간색을 표기했습니다.
orient의 설정을 vertical로 했기 때문에 세로 형태입니다.
width와 height를 설정해서 모양을 다듬었습니다. 다듬지 않았다면 test1_pgb와 같은 모양으로 세로로 바가 채워져 있을 것입니다.
이벤트
on <progressbar> clicked <arg> do <expr>
progressbar를 클릭했을 때 발생하는 이벤트입니다. 프로그래스 바의 위치를 수치로 알려줍니다.
한번 넣어 봅시다.
다음과 같이 입력을 하고 실행해 봅시다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
rollout testRoll "Test!"
(
progressBar test1_pgb value:50 color:(color 0 0 255)
progressBar test2_pgb value:50 color:red orient:#vertical width:15 height:100
on test1_pgb clicked val do
(
format "test1_pgb = %\n" val
)
on test2_pgb clicked val do
(
format "test2_pgb = %\n" val
)
)
createdialog testRoll
|
cs |
만약 test1_pgb의 제일 왼쪽 끝을 클릭하면 test1_pgb = 0이 출력되고 오른쪽 끝이라면 test1_pgb = 100이 출력될 것입니다.
마우스 클릭 값을 제대로 알려주네요.
이것 가지고는 ProgressBar의 역할을 알 수가 없네요.
한 번 더 수정해서 확인해 봅시다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
rollout testRoll "Test!"
(
progressBar test1_pgb value:50 color:(color 0 0 255)
progressBar test2_pgb value:50 color:red orient:#vertical width:15 height:100
button test_btn "실행!"
on test1_pgb clicked val do
(
format "test1_pgb = %\n" val
)
on test2_pgb clicked val do
(
format "test2_pgb = %\n" val
)
on test_btn pressed do
(
for i = 1 to 100 do
(
posx = random -250 250
posy = random -250 250
posz = random -250 250
mkBox = box()
mkbox.pos = [posx, posy, posz]
test1_pgb.value = i
test2_pgb.value = 100 - i
format "i = %\n" i
)
)
)
createdialog testRoll
|
cs |
버튼의 이벤트는 그렇게 어려운 내용은 없습니다.
for문을 이용하여 박스를 100개 만드는데,
random명령어를 이용하여 -250부터 250 사이의 값을 랜덤 하게 뽑아 옵니다.
이렇게 랜덤 하게 뽑은 값 3개를 만들어지는 박스의 위치 값에 적용합니다.
test1_pgb.value = i
test2_pgb.value = 100 - i
위 두 개의 원리는 똑같습니다.
1~100까지 진행하는 i값을 progressBar에 넣어주는데 그냥 넣느냐 빼는 값으로 넣느냐의 차이입니다.
결과는 실행하면 눈으로 확인할 수 있으니 넘어가겠습니다.
마지막의 format문은 별다른 의미는 없고, 컴퓨터 사양이 너무 좋으면 ProgressBar가 움직이는 게 눈으로 보이지 않기 때문에 조금이라도 시간이 걸리게끔 format문 출력을 넣은 것입니다.
오늘은 ProgressBar에 대해서 이야기해 보았습니다.
다음으로 groupBox에 대해서 알아보도록 하겠습니다.
'맥스스크립트 기본' 카테고리의 다른 글
UI(19) 기타 설명 할것들2 (0) | 2019.08.18 |
---|---|
UI(18) 기타 설명 할것들1 (0) | 2019.08.17 |
UI(17)Rollout Floater Windows (0) | 2019.08.16 |
UI(16)groupBox (0) | 2019.08.15 |
UI(14) Pickbutton (0) | 2019.08.10 |
UI(13) Dropdownlist (2) | 2019.08.09 |
UI(12) MultiListbox (0) | 2019.08.08 |
UI(12) Listbox (9) | 2019.08.07 |