안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
오늘은 이전에 만든 버튼에 실제 오브젝트가 연동하는 것을 알아보려고 합니다.
이전에 작업한 스크립트의 내용은 아래와 같습니다.
1
2
3
4
5
6
7
8
9
10
|
rci = rolloutCreator "BoxButton_Rollout" "Box Button"
rci.begin()
totalObj = $* as array
for i = 1 to totalObj.count do
(
btnName = execute("#boxButton_btn" + (i as string))
rci.addControl #button btnName "박스"
)
createDialog (rci.end())
|
cs |
버튼이 작동하려면 이벤트 핸들러가 있어야 겠네요.
간단하게 버튼 클릭으로 이벤트 핸들러를 정하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
fn fn_action objNm =
(
format "% 오브젝트와 연결되어 있습니다.\n" objNm
)
rci = rolloutCreator "BoxButton_Rollout" "Box Button"
rci.begin()
totalObj = $* as array
for i = 1 to totalObj.count do
(
btnName = execute("#boxButton_btn" + (i as string))
rci.addControl #button btnName "박스"
objectName = totalObj[i].name
rci.addHandler btnName #pressed codeStr: ("fn_action " +"@" + objectName + "@") filter:on
)
createDialog (rci.end())
|
cs |
대화창의 버튼을 위에서부터 순서대로 누르면 다음과 같이 결과가 나옵니다.
각 버튼과 연결된 박스의 이름이 나옵니다.
추가된 스크립트의 내용을 설명하자면
1 ~ 4번 라인의 사용자 정의 함수는 외부에서 호출할 때 추가되는 인수 값을 받아 format문으로 출력하는 내용입니다.
15번 라인의 내용은 버튼 UI를 만들 때 해당 박스의 이름을 objectName 변수에 저장해 둡니다.
16번 라인의 내용은 버튼 UI의 이벤트 핸들러를 생성하며, 버튼이 클릭되면 fn_action 함수를 호출합니다.
호출할 때 인자로 변수 objectName을 추가합니다.
여기에 한 가지 난해한 부분이 있는데 정확하게는 저도 잘 모르는 내용입니다.
codeStr: ("fn_action " +"@" + objectName + "@")
이 부분에서 @를 사용했는데요.
기존 설명에서는 @를 "대용으로 쓴다고 했습니다.
하지만 그럴 경우에는
codeStr: "fn_action objectName "
라고 적으면 될 것 같지만 실제로 작성하면 다른 결과 값을 보여줍니다.
이전에 작업한 것과 동일하게 버튼을 위에서 아래로 순서대로 클릭했지만 다른 결과 값을 보여 줍니다.
여기서 생각할 수 있는 것은 변수가 입력되는 부분은 @로 감싸 줘야 한다는 것이고,
'codeStr'에는 문자열만 들어갈 수 있기 때문에 @를 "로 감싸야한다는 것입니다.
그리고 마지막으로 'codeStr'는 하나의 문자열로 입력해야 하기 때문에 ()로 묶어야 정상적으로 작동한다는 것입니다.
이 부분은 맥스 헬퍼로도 해결을 할 수 없어서 구글링을 하다 해외 사이트에서 사용 예제를 발견한 내용이라 설명 부분은 실제와 다를 수 있습니다.
이제 여기서 끝을 낼 수 있겠지만, 조금 더 예쁘게 꾸미고 싶은 욕심이 생기네요.
다음 시간에는 버튼의 이름과 위치를 바꿔 보도록 하겠습니다.
오늘은 여기까지 하겠습니다.
'맥스스크립트 심화' 카테고리의 다른 글
actionMan을 이용한 대화상자(2) (0) | 2021.04.15 |
---|---|
actionMan을 이용한 대화상자(1) (0) | 2021.04.14 |
RolloutCreator Functions(6) (0) | 2021.04.12 |
RolloutCreator Functions(5) (0) | 2021.04.09 |
RolloutCreator Functions(3) (0) | 2021.04.07 |
RolloutCreator Functions(2) (0) | 2021.04.06 |
RolloutCreator Functions(1) (2) | 2021.04.05 |
맥스 스크립트 UI의 세부 사용법 (3) | 2021.03.14 |