안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
오늘은 checkbox에 대해서 이야기하겠습니다.
맥스에서 체크 박스는 다음과 같은 녀석을 말합니다.
checkbox는 마우스 클릭으로 체크를 하거나 체크를 해지하는 것으로 다른 체크박스에 영향을 받지 않습니다.
문법에 대해서 알아봅시다.
checkbox <name> [<caption>] [checked:<boolean>] [triState:<integer>][tooltip:<string>]
<name>는 만들어질 checjbox의 이름을 정합니다.
[<caption>]는 checkbox에 문자열을 넣을 수 있게 해 줍니다.
주로 checkbox가 어떤 동작을 하는지 보여주는 데 사용합니다.
[checked:<boolean>]는 checkbox생성 시 true는 체크상태 false는 비 체크상태입니다.
[triState:<integer>]는 true와 false의 2단계에서 중간단계인 상태가 추가됩니다.
이때는 0은 비 체크, 1은 체크, 2는 중간입니다.
말은 이렇게 했는데 맞는지 확인해 봅시다.
다음과 같이 입력하고 실행해 봅시다.
1
2
3
4
5
6
|
rollout testRoll "Test!"
(
checkbox test1_chk "체크박스1" checked:true
checkbox test2_chk "체크박스2" triState:2
)
createdialog testRoll
|
cs |
위와 같이 생성이 됩니다.
체크박스 2는 보면 체크하는 부분이 회색으로 나오는데요, 이것이 체크와 비 체크의 중간 상태입니다.
마우스로 클릭해 보면 체크와 비 체크상태 두 개로만 바뀌어서 체크박스 1과 똑같아 보이는데요, 이것은 스크립트 내부에서 중간 상태를 바꿀 수 있습니다.
checkbox는 설명할 부분이 없으니 바로 이벤트에 대해서 알아보도록 하겠습니다.
on <checkbox> changed <arg> do <expr>
만들어 놓은 checkbox의 값이 변경되면 이벤트가 발생합니다.
다음과 같이 수정해 봅시다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
rollout testRoll "Test!"
(
checkbox test1_chk "체크박스1" checked:true
checkbox test2_chk "체크박스2" triState:2
on test1_chk changed state do
(
if (state == true) do test2_chk.triState = 2
)
on test2_chk changed state do
(
format"test1_chk = %\n" test1_chk.state
)
)
createdialog testRoll
|
cs |
안쪽에 동작 방식을 구현했기 때문에 겉으로 바뀐 것은 없습니다.
이벤트의 작동에 대해서 알아봅시다.
on test1_chk changed state do
(
if (state == true) do test2_chk.triState = 2
)
는 checkbox인 test1_chk의 상태(state)가 변경될때 발생합니다.
내용은 만약 test1_chk의 상태가 true(체크)이면 아래의 checkbox인 test2_chk의 상태(triState)를 2로 바꿉니다.
즉 test1_chk가 test2_chk의 상태를 변경하는 것입니다.
on test2_chk changed state do
(
format"test1_chk = %\n" test1_chk.state
)
는 test2_chk의 상태가 바뀔 때마다 test1_chk의 상태를 format문으로 MAXScript Listener에 출력해 줍니다.
오늘은 맥스의 checkbox에 대해서 알아보았습니다.
그리고 다른 UI의 값을 받아와서 사용하는 방법에 대해서도 아주 약간이지만 배워보았습니다.
다음에는 checkbox와 비슷한 checkbutton에 대해서 이야기해 보도록 하겠습니다.
'맥스스크립트 기본' 카테고리의 다른 글
UI(10) edittext (0) | 2019.08.05 |
---|---|
UI(9) radiobuttons (0) | 2019.08.04 |
UI(8) checkbutton의 이벤트 (0) | 2019.08.01 |
UI(7) checkbutton의 문법 (0) | 2019.07.31 |
UI(6) Spinner의 이벤트 (0) | 2019.07.28 |
UI(5) Spinner의 문법 (0) | 2019.07.27 |
UI(4) Button 이벤트 및 이미지, 메시지박스 (0) | 2019.07.26 |
UI(3) Label, Button (0) | 2019.07.25 |