안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
오늘은 다이얼로그에서 사용되는 이벤트에 대해서 이야기하겠습니다.
이벤트란 사용자가 입력도구(키보드 마우스)등을 사용했을 때 다이얼로그에서 발생하는 일을 얘기합니다.
말이 어려우니 우선 해봅시다.
다음과 같이 입력하고 실행을 해보겠습니다.
1
2
3
4
5
6
7
8
|
rollout testRoll "Test"
(
on testRoll open do
(
format "Open!!\n"
)
)
createdialog testRoll
|
cs |

다이얼로그를 만드는 방법은 이전 시간에 이야기했으니 넘어가겠습니다.
3번 라인의 on testRoll open do은 testRoll이 열렸을 때 아래 내용을 실행하라입니다.
아래 내용은 format "Open!!\n"으로 format문을 사용하여 Poen이라는 글자를 맥스 스크립트 리스너에 출력하고 다음 줄로 넘기는 것입니다.
즉 testRoll이라는 다이얼로그가 실행되어 열렸을 때 open 이벤트가 발생하여 format문을 실행한 것입니다.
그럼 다른 이벤트는 무엇이 있는지 알아봅시다.
Events:
on <Rollout> open do
다이얼로그가 열렸을때 불립니다.
on <Rollout> close do
다이얼로그가 닫혔을 때 불립니다.
on <Rollout> moved <Point2> do
다이얼로그가 움직였을 때 불립니다.
on <Rollout> resized <Point2> do
다이얼로그의 크기를 바꾸면 불립니다.
on <Rollout> mousemove <Point2> do
다이얼로그 안에서 마우스를 이동했을 때 불립니다.
on <Rollout> lbuttondown <Point2> do
다이얼로그 안에서 왼쪽 마우스 버튼을 누르면 불립니다.
on <Rollout> lbuttonup <Point2> do
다이얼로그 안에서 왼쪽 마우스 버튼을 누른 후 떼면 불립니다.
on <Rollout> lbuttondblclk <Point2> do
다이얼로그 안에서 왼쪽 마우스 버튼을 더블 클릭하면 불립니다.
on <Rollout> mbuttondown <Point2> do
다이얼로그 안에서 가운데 마우스 버튼을 누르면 불립니다.
on <Rollout> mbuttonup <Point2> do
다이얼로그 안에서 가운데 마우스 버튼을 누른 후 떼면 불립니다.
on <Rollout> mbuttondblclk <Point2> do
다이얼로그 안에서 가운데 마우스 버튼을 더블 클릭하면 불립니다.
on <Rollout> rbuttondown <Point2> do
다이얼로그 안에서 오른쪽 마우스 버튼을 누르면 불립니다.
on <Rollout> rbuttonup <Point2> do
다이얼로그 안에서 오른쪽 마우스 버튼을 누른 후 떼면 불립니다.
on <Rollout> rbuttondblclk <Point2> do
다이얼로그 안에서 오른쪽 마우스 버튼을 더블 클릭하면 불립니다.
까짓 거 다 넣어서 확인해 봅시다.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
rollout testRoll "Test"
(
label posX_lab "Position X : "
label posY_lab "Position Y : "
label sizX_lab "Size X : "
label sizY_lab "Size Y : "
label mouX_lab "Mouse X : "
label mouY_lab "Mouse Y : "
label mouC_lab "Mouse Click : "
on testRoll open do
(
format "Open!!\n"
)
on testRoll close do
(
format "Close!!\n"
)
on testRoll moved pos do
(
posX_lab.text = "Position X : " + (pos.x as string)
posY_lab.text = "Position Y : " + (pos.y as string)
)
on testRoll resized pos do
(
sizX_lab.text = "Size X : " + (pos.x as string)
sizY_lab.text = "Size Y : " + (pos.y as string)
)
on testRoll mousemove pos do
(
mouX_lab.text = "Mouse X : " + (pos.x as string)
mouY_lab.text = "Mouse Y : " + (pos.y as string)
)
on testRoll lbuttondown pos do
(
mouC_lab.text = "Mouse Click : " + "왼쪽 마우스 누름!"
)
on testRoll lbuttonup pos do
(
mouC_lab.text = "Mouse Click : " + "왼쪽 마우스 뗌!"
)
on testRoll lbuttondblclk pos do
(
mouC_lab.text = "Mouse Click : " + "왼쪽 마우스 더블클릭!"
)
on testRoll mbuttondown pos do
(
mouC_lab.text = "Mouse Click : " + "왼쪽 마우스 누름!"
)
on testRoll mbuttonup pos do
(
mouC_lab.text = "Mouse Click : " + "왼쪽 마우스 뗌!"
)
on testRoll mbuttondblclk pos do
(
mouC_lab.text = "Mouse Click : " + "왼쪽 마우스 더블클릭!"
)
on testRoll rbuttondown pos do
(
mouC_lab.text = "Mouse Click : " + "왼쪽 마우스 누름!"
)
on testRoll rbuttonup pos do
(
mouC_lab.text = "Mouse Click : " + "왼쪽 마우스 뗌!"
)
on testRoll rbuttondblclk pos do
(
mouC_lab.text = "Mouse Click : " + "왼쪽 마우스 더블클릭!"
)
)
createdialog testRoll style:#(#style_titlebar,#style_resizing, #style_minimizebox, #style_maximizebox, #style_sysmenu)width:300 height:200
|
cs |
우와~ 상당히 긴 내용이 되었습니다.
3번 ~ 9번 라인의 label은 지금 설명하지 않고 뒤에 따로 설명을 하도록 하겠습니다.
단지 다이얼로그에서 문자열을 보여준다고 생각하시면 됩니다.
on으로 시작되는 이벤트가 설명한 대로 발생해서 다이얼로그에 잘 출력을 하는지에만 관심을 갖도록 하겠습니다.
on testRoll open do는 위에 이미 설명을 했고
on testRoll close do도 on testRoll open do와 동일하게 작동합니다.
단 다이얼로그가 닫힐 때 실행되는 부분이 다릅니다.
on testRoll moved pos do는 이벤트를 호출할 때 pos라고 <Point2>값을 받는데 이것은 마우스의 X축과 Y축을 뜻합니다.
posX_lab.text = "Position X : " + (pos.x as string)와 posY_lab.text = "Position Y : " + (pos.y as string)는 마우스의 X와 Y의 위치 값을 받아와서 문자열로 바꾼 후 다이얼로그 화면에 보여줍니다.
on testRoll resized pos do도 on testRoll moved pos do와 같이 마우스의 X와 Y의 위치값을 받아 오는데 resized 명령어 덕분에 마우스의 위치값을 자동으로 추적해 다이얼로그의 사이즈를 측정해 줍니다.
on testRoll mousemove pos do는 마우스의 위치를 측정하는데 위 두 이벤트와 다르게 클릭하거나 드래그하지 않고 움직이기만 해도 이벤트가 발생합니다.
이후의 on testRoll lbuttondown pos do와 같은 마우스 버튼 관련 이벤트에서 pos값이 필요한 이유는 마우스가 다이얼로그 안에 있는지 밖에 있는지를 확인하기 위해 필요한것 같습니다.
마우스가 다이얼로그 밖에 있을 경우에는 이벤트가 발생하지 않기 때문에 그렇게 생각합니다.
그 이후의 내용은 이전에 이야기한 내용이라 따로 이야기하지 않겠습니다.
오늘은 다이얼로그의 이벤트에 대해서 이야기해보았습니다.
다음엔 오늘 이야기하지 않은 Label에 대해서 이야기해보도록 하겠습니다.
'맥스스크립트 기본' 카테고리의 다른 글
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 |
UI(1) Dialog-다이알로그 (2) | 2019.07.23 |
Modifier(3) Symmetry (3) | 2019.07.22 |
Modifier(2) 속성 및 함수 (2) | 2019.07.21 |
Modifier(1) Bend (0) | 2019.07.20 |