안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
지난번에 마무리 짓지 못한 button을 사용한 이벤트와 button에 이미지를 씌우는 것에 대해서 이야기하겠습니다.
먼저 버튼을 만들어 봅시다.
다음과 같이 입력하고 실행해 봅시다.
1
2
3
4
5
|
rollout testRoll "Test!"
(
button test_btn "button" toolTip:"버튼1"
)
createdialog testRoll
|
cs |

이벤트
이벤트의 문법을 알아보도록 할까요?
on <button> pressed do <expr>
왼쪽 마우스로 버튼을 클릭했을 때 해당 이벤트가 발생합니다.
on <button> rightclick do <expr>
오른쪽 마우스로 버튼을 클릭 했을 때 해당 이벤트가 발생합니다.
또 이상한 소리가 나왔으니 당장 예제를 확인해 보겠습니다. ㅎㅎ
다음과 같이 수정하고 실행해 봅시다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
rollout testRoll "Test!"
(
button test_btn "button" toolTip:"버튼1"
on test_btn pressed do
(
messagebox "왼쪽 버튼 클릭!"
)
on test_btn rightclick do
(
messagebox "오른쪽 버튼 클릭!"
)
)
createdialog testRoll
|
cs |
겉보기에는 바뀐 게 없습니다.
왼쪽 마우스 버튼을 클릭해 볼까요?
이번에는 오른쪽 마우스 버튼을 클릭해 보겠습니다.
버튼을 누를 때마다 다음과 같은 창이 생성이 됩니다.
어떻게 이렇게 작동을 하는지 알아보도록 합시다.
on test_btn pressed do은 'test_btn버튼을 마우스 왼쪽 버튼으로 누르면 다음으로 오는 내용을 실행하라'는 내용입니다.
on test_btn rightclick do도 비슷하게 'test_btn버튼을 마우스 오른쪽 버튼으로 클릭하면 다음으로 오는 내용을 실행하라'는 내용입니다.
MessageBox
다음으로 오는 내용은 messageBox를 사용하였는데 간단한 내용이니 이것에 대해서도 알아보도록 하죠.
(button에 대한 이야기를 하려고 했는데 messageBox이야기를 하게 됐네요. ㅎㅎㅎ 적은 김에 제목에도 올려야겠네요.)
messageBox <message_string> [ title:<window_title_string>] [ beep:<boolean>]
messageBox는 창을 띄워 문자로 구성된 <message_string>를 보여 주는 역할을 합니다.
사용자에게 간단한 정보를 보여줄 때 자주 사용됩니다.
뒤에 title:<window_title_string>를 붙이면 창의 타이틀을 적을 수 있고,
beep:<boolean>를 true로 하면 효과음이 나오고 false로 하면 나오지 않습니다.
Image Buttons
이미지 버튼을 이용하면 버튼 위에 이미지를 씌워서 UI를 보기 좋게 꾸밀 수 있도록 할 수 있습니다.
button의 images에 사용되는 속성에 대해서 알아보도록 하겠습니다.
images: #( <image>, <maskImage>, <count_integer>, <enabled_out_image_index>, <enabled_in_image_index>, <disabled_out_image_index>, <disabled_in_image_index>, <invert_boolean>, <colortheme_boolean> )
속성이 꽤 많습니다. 흑흑흑
하나하나 어떤 역할을 하는지 확인해 봅시다.
<image> : 사용할 Bitmap(BMP) 파일을 지정합니다.
<maskImage> : 사용할 Bitmap파일을 마스크를 사용하여 투명화될 영역을 지정합니다.
<count_integer> : 사용할 Bitmap파일 내의 이미지 개수를 정합니다.
<enabled_out_image_index> : 버튼이 활성화되었을 때 보여주는 이미지를 정합니다.
<enabled_in_image_index> : 버튼이 활성화되고 버튼을 누를 때 보여주는 이미지를 정합니다.
<disabled_out_image_index> : 버튼이 비활성화되었을 때 보여주는 이미지를 정합니다.
<disabled_in_image_index> : 버튼이 비활성화되고 버튼을 누를 때 보여주는 이미지를 정합니다.
<invert_boolean> : <maskImage>를 사용할 때 false를 사용하면 검은색 부분의 <image> 픽셀을 보여줍니다.
true를 사용하면 흰색 부분의 <image> 픽셀을 보여줍니다.
생략한다면 false로 취급합니다.
<colortheme_boolean> : 윈도의 색상 테마의 사용을 결정합니다.
생략하면 false로 취급합니다.
여기서 한 가지 이상한 점이 있습니다.
'<count_integer> : 사용할 Bitmap파일 내의 이미지 개수를 정합니다.'라는 부분입니다.
'이미지가 한 장인데 어떻게 그 안에서 개수를 정할 수 있을까?'라는 생각을 할 수 있습니다.
다음 이미지를 보면 이해가 되실 겁니다.
하나의 이미지 안에 8개의 아이콘이 있습니다.
이렇기 때문에 이미지를 숫자를 사용하여 지정할 수 있습니다.
아래와 같이 <maskImage>를 따로 BMP파일로 사용하는 경우도 있습니다.
사실 모든 것을 다 사용할 필요는 없고 필요한 것만 사용하면 됩니다.
실제로 버튼에 사용해 봅시다.
다음과 같이 새로이 입력하고 실행해 봅시다.
1
2
3
4
5
6
7
8
9
|
bmpFile = "C:\\Program Files\\Autodesk\\3ds Max 2016\\UI_ln\\Icons\\CAT_AddLayer_i.bmp"
bmpAFile = "C:\\Program Files\\Autodesk\\3ds Max 2016\\UI_ln\\Icons\\CAT_AddLayer_a.bmp"
rollout testRoll "Test!"
(
button test_btn "" toolTip:"버튼1" images:# (bmpFile, bmpAFile, 8, 1 , 2 , 1, 2, true ) width:48 height: 24
)
createdialog testRoll
|
cs |
버튼에 이미지가 들어왔습니다.
'images:# (bmpFile, bmpAFile, 8, 1 , 2 , 1, 2, true ) width:48 height: 24'의 내용을 위에서 확인한 속성에 대입하여 확인해 봅시다.
bmpFile이 <image>입니다.
bmpFile = "C:\\Program Files\\Autodesk\\3ds Max 2016\\UI_ln\\Icons\\CAT_AddLayer_i.bmp"을 하여 bmpFile변수에 파일명과 패스를 같이 넣었습니다.
(이 부분은 나중에 파일 관리에서 자세히 배우겠습니다. 그냥 컴퓨터 어딘가에 있는 파일의 위치 값을 저장했다고 생각하시면 됩니다.)
bmpAFile는 <maskImage>입니다.
8은 <count_integer>입니다.
처음으로 오는 1은 <enabled_out_image_index>입니다.
처음으로 오는 2는 <enabled_in_image_index>입니다.
두 번째로 오는 1은 <disabled_out_image_index>입니다.
두번째로 오는 2는 <disabled_in_image_index>입니다.
true는 <invert_boolean>인데 그냥 사용하면 마스크가 반대로 적용되기 때문에 true로 해줍니다.
<colortheme_boolean>는 사용하지 않아서 생략했습니다.
말로 하면 어렵고 무슨 이야기인지 알기 힘들지만, 몇 번만 해보시면 이해하시기 쉬울 것입니다.
오늘은 지난번에 이어 button에 대해서 이야기를 했고, 곁다리로 messageBox에 대해서도 배웠습니다.
다음에는 spinner에 대해서 이야기해보도록 하겠습니다.
'맥스스크립트 기본' 카테고리의 다른 글
UI(7) checkbutton의 문법 (0) | 2019.07.31 |
---|---|
UI(7) checkbox (0) | 2019.07.29 |
UI(6) Spinner의 이벤트 (0) | 2019.07.28 |
UI(5) Spinner의 문법 (0) | 2019.07.27 |
UI(3) Label, Button (0) | 2019.07.25 |
UI(2) Dialog의 이벤트 (2) | 2019.07.24 |
UI(1) Dialog-다이알로그 (2) | 2019.07.23 |
Modifier(3) Symmetry (3) | 2019.07.22 |