맥스스크립트 기본

UI(17)Rollout Floater Windows

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

안녕하세요.

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

오늘은 UI 중에서도 한 단계 심화된 내용을 이야기하겠습니다.

지금까지 다이얼로그 형식은

 

1
2
3
4
5
rollout testRoll "Test!"
(
......
)
createdialog testRoll 190 80
cs

 

이런 식으로 입력해서

 

 

이렇게 표현했습니다.

하지만 맥스의 UI를 살펴보면 접었다 폈다 하는 UI가 있는데요.

맥스 스크립트 UI는 Rollout Floater Windows를 사용하여 표현합니다.

 

 

 

문법

 

newRolloutFloater <title_string> <width_integer> <height_integer> [<top_integer> <left_integer>]

 

<title_string>는  Rollout Floater Windows형식으로 만들어지는 newRolloutFloater의 이름입니다.

<width_integer>는 윈도우의 너비입니다.

<height_integer>는 윈도우의 높이입니다.

[<top_integer> <left_integer>]는 윈도우가 생성될 때 위치입니다.

 

긴 얘기는 필요 없고 우선 만들고 봅시다.

 

1
newRolloutFloater "test!" 300 200
cs

 

 

위처럼 작성하면 아래처럼 만들어집니다.

 

 

아무것도 없지만 기존에 만든 다이얼로그와는 다른 형태로 만들어집니다.

테두리를 마우스로 잡고 움직이면 창의 크기도 조절이 가능합니다.

 

내용이 텅텅 비었으니 뭔가 채워 넣어 볼까요?

다음과 같이 입력해 봅시다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
rollout test1_roll "test1"
(
    button test_btn "버튼"
)
 
rollout test2_roll "test1"
(
    button test_btn "버튼"
)
 
myFloater = newRolloutFloater "test!" 300 200
 
addRollout test1_roll myFloater
addRollout test2_roll myFloater
cs

 

 

위아래로 뭔가 많아졌네요.

확인해 봅시다.

rollout test1_roll "test1"
(
    button test_btn "버튼"
)

rollout test2_roll "test1"
(
    button test_btn "버튼"
)

은 이미 배울 만큼 배운 거니까 어떤 건지 아실 겁니다.

myFloater = newRolloutFloater "test!" 300 200

은 newRolloutFloater "test!" 300 200을 myFloater라는 변수에 저장을 합니다.

그리고 그다음 줄에 addRollout을 사용하여 test1_roll과  test2_roll를 myFloater에 추가합니다.

각 탭의 이름을 클릭해 보면 접혔다 펴지는 것을 확인할 수 있습니다.

 

여기서 잠깐 rollout인 test1_roll과 test2_roll를 보면 똑 같이 test_btn을 만드는 것을 알 수 있습니다.

하지만 별다른 에러 없이 스크립트는 실행이 되죠.

UI도 자신의 영역에서만 작동을 하고 자신의 영역 밖에서는 작동을 하지 않기 때문입니다.

 

가끔 상호 간에 영향을 미쳐야 할 경우가 있는데요.

그것에 대해 알아봅시다.

다음과 같이 수정해 보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
rollout test1_roll "test1"
(
    button test_btn "버튼"
    
    on test_btn pressed do
    (
        test2_roll.test_btn.caption = "변경1"
    )
)
 
rollout test2_roll "test1"
(
    button test_btn "버튼"
    
    on test_btn pressed do
    (
        test1_roll.test_btn.caption = "변경2"
    )
)
 
myFloater = newRolloutFloater "test!" 300 200
 
addRollout test1_roll myFloater
addRollout test2_roll myFloater
cs

 

 

별다른 변경이 없는데 각각의 버튼을 클릭해 봅시다.

 

 

이렇게 바뀌었나요?

분명히 rollout test1_roll "test1"영역의 test_btn이 

rollout test2_roll "test1"영역의 test_btn에 영향을 주네요.

 

바뀐 부분을 확인하여 변경이 가능한 이유를 알아봅시다.

rollout test1_roll "test1"영역의 버튼이 눌렸을 때 발생하는 이벤트를 확인하면

test2_roll.test_btn.caption = "변경1"

이 실행됩니다.

내용을 해석하면 test2_roll에 있는 test_btn의 제목을 '변경 1'로 하여라입니다.

즉 어느 rollout에 있는 test_btn인지를 지정한 것입니다.

이런 식으로 한다면 다른 영역에 있는 UI의 수정도 가능해집니다.

 

오늘은 Rollout Floater Windows에 대해서 이야기해 보았습니다.

다음은 맥스 스크립트 UI에서 정리하지 못한 자투리들에 대해서 이야기하겠습니다.

728x90
반응형

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

파일 열기와 저장(2) 맥스파일 load, save, reset  (0) 2019.08.23
파일 열기와 저장(1) 열린 파일의 패스와 이름  (0) 2019.08.22
UI(19) 기타 설명 할것들2  (0) 2019.08.18
UI(18) 기타 설명 할것들1  (0) 2019.08.17
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