맥스스크립트 기본

UI(12) MultiListbox

스크립팅하는애님 2019. 8. 8. 16:08
728x90
반응형

안녕하세요.

애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.

오늘 이야기할 UI는 MultiLostbox인데요, 이전에 이야기했던 Listbox와 비슷한 기능을 가졌습니다.

Multi라는 단어로 보아 뭔가 여러 개를 할 것 같은 느낌이네요. ㅎㅎ

 

 

문법

 

MultiListBox <name> [<caption>] [items:<array_of_strings>] [selection:{<bitarray> | <number_array> | <number>}] [height:<number> ]

 

[items:<array_of_strings>]는 MultiListBox의 항목을 넣을 수 있습니다.

[selection:{<bitarray> | <number_array> | <number>}]은 나열된 여러 항목 중에 선택할 위치를 숫자로 나타냅니다. 기본적으론 1입니다.

[height:<number> ]는 리스트의 높이를 뜻하는데 근본적으론 항목을 기입할 수 있는 라인의 수입니다.  

 

뭔가 Listbox와 같은 것만 있네요.

그럼 작성하여 실행해 보도록 하겠습니다.

 

1
2
3
4
5
rollout testRoll "Test!"
(
   multilistbox test_mlb "멀티리스트박스" items:#("가", "나", "다", "라") selection:1 height:4
)
createdialog testRoll
 
cs

 

 

음~~ 그냥 보기엔 Listbox와 같아 보이네요.

무엇이 다른지 확인해 봅시다.

윈도우 탐색기처럼 Ctrl+ 왼클릭, Shift + 왼클릭, 드래그 등으로 확인해 봅시다.

이런식으로

 

혹은 이런식으로

 

위 이미지와 같은 방식으로 선택이 가능한가요?

ListBox의 경우 1개의 항목만 선택할 수 있지만 MultiListBox는 복수개의 항목을 선택할 수 있습니다.

 

 

이벤트

 

on <listbox> selected <arg> do <expr>

이름은 selected지만, 항목을 선택하거나 취소했을 때 발생하는 이벤트입니다.

 

on <listbox> selectionEnd do <expr>

항목의 선택이 끝났을 때 발생하는 이벤트입니다.

 

on <listbox> doubleClicked <arg> do <expr>

항목을 더블클릭했을 때 발생하는 이벤트입니다.

 

on <listbox> rightClick do <expr>

MultiListBox를 마우스 오른쪽 버튼으로 클릭할 때 발생하는 이벤트입니다.

 

어떤 방식으로 사용하는지 확인해 봅시다.

다음과 같이 입력하고 실행을 해봅시다.

 

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
rollout testRoll "Test!"
(
    multilistbox test_mlb "멀티리스트박스" items:#("가", "나", "다", "라") selection:1 height:4
    
    on test_mlb selected val do
    (
        format "Selected Event No %\n" val
    )
    
    on test_mlb selectionEnd do
    (
        format "SelectionEnd Event\n"
    )
    
    on test_mlb doubleClicked val do
    (
        format "DoubleClicked No %\n" val
    )
    
    on test_mlb rightClick do
    (
        format "rightClick\n"
    )
)
createdialog testRoll
 
cs

 

바뀐게 없어 보이네요. ㅎㅎ

 

막 클릭질해 보고, 드래그도 해 보며 MAXScript Listener에 출력되는 내용을 확인해 봅시다.

뭔가 생각한 대로 출력이 되나요?

살짝 이상해 보이나요?

이벤트 자체는 지금까지 이야기해 온 것과 같기 때문에 따로 설명을 하지는 않겠습니다.

(혹시나 필요하시면 댓글 달아 주세요.)

 

이상해 보이는 결과가 왜 그렇게 나오는지를 알아봅시다.

우선 다이얼로그의 선택항목을 첫 번째인 '가'로 하고,

MAXScript Listener를 Ctrl+D를 해서 깨끗이 한 다음에 다음과 같이 선택해 봅시다.

 

요렇게 만든 후

 

이렇게 만듭시다.

 

그런 다음에 드래그를 사용해(Shift나 Ctrl을 사용해도 문제없음) '가~다'까지 선택해 봅시다.

 

 

 

위 두 개의 이미지와 같이 만들어 봅시다.

MAXScript Listener의 내용을 확인하면 1번(가)이 선택되어 있는데 2번과 3번(나, 다)만 선택되었다고 출격이 됩니다.

이상해 보이지만 사실 이게 맞습니다.

1번(가)은 이미 선택이 되어 있는 상태였기 때문에 상태가 변하지 않았습니다.

그렇기 때문에 1번이 빠져 있는 것입니다.

 

그럼 다음으로 '나~라'까지 선택해 봅시다.

 

요롷게요.

 

결과는 이렇게 됩니다.

 

아닛!! 선택하지 않은 1번(가)이 선택됐다고 나오고, 2번(나)과 3번(다)은 선택됐다는 얘기가 없고 4번(라)이 선택이 되었다고 나오네요.

1번(가)은 선택된 상태에서 선택이 해제가 됐기 때문에 출력이 됐습니다.

말이 Selected일 뿐이지 실제 작동 원리는 Chenged에 가깝습니다.

2번(나)과 3번(다)은 이미 선택되어 있던 것이기 때문에 바뀐 것이 없어 이벤트가 발생하지 않았습니다.

4번(라)은 신규로 선택됐기 때문에 변화가 있어서 이벤트가 발생한 것입니다.

 

나머지 이벤트는 크게 설명해야 할 부분이 없어 설명하지 않겠습니다.

지금까지 쭈욱 읽어 오신 분이라면 충분히 알 수 있으리라 생각합니다.

 

오늘은 MultiListBox에 대해서 이야기를 해 보았습니다.

다음은 ListBox나 MultiListBox와 비슷하지만 다른 Dropdownlist에 대해서 이야기해 보겠습니다.

728x90
반응형

'맥스스크립트 기본' 카테고리의 다른 글

UI(16)groupBox  (0) 2019.08.15
UI(15) ProgressBar  (0) 2019.08.14
UI(14) Pickbutton  (0) 2019.08.10
UI(13) Dropdownlist  (2) 2019.08.09
UI(12) Listbox  (9) 2019.08.07
UI(11) Slider  (2) 2019.08.06
UI(10) edittext  (0) 2019.08.05
UI(9) radiobuttons  (0) 2019.08.04