안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
오늘도 지난번에 이어 Callback에 대해 설명을 하겠습니다.
Inspecting Callbacks
지난번에 callback을 삭제하는 것에 대해 공부를 했는데 삭제가 정말로 잘 이루어졌는지 혹은 현재 실행 중인 callback이 어떤 것이 있는지 확인하는 방법이 궁금할 수 있습니다.
callback 삭제 여부를 확인하는 방법은
callbacks.show()
를 사용합니다.
MaxScript Editor를 열고 다음과 같이 입력한 다음 실행해 봅시다.
1
2
3
4
5
6
7
8
9
10
11
12
|
fn messgebox_fn =
(
messagebox "animation On"
)
fn messgebox2_fn =
(
messagebox "animation Off"
)
callbacks.addScript #animateOn "messgebox_fn()" id:#myanimationOn
callbacks.addScript #animateOff "messgebox2_fn()" id:#myanimationOn
|
cs |
(이전에 적은 것과 동일한 내용입니다.)
그리고 이번에는 다음과 같이 입력하여 어떤 callback이 실행되었는지 확인해 봅시다.
1
|
callbacks.show()
|
cs |
(여러분들이 보시는 결과 값은 저와는 다를 수 있습니다. 이유는 여러분이 이미 실행했거나 맥스에서 기본적으로 실행하는 callback이 존재할 수 있기 때문입니다. 요점은 AnimateOn과 AnimateOff가 있는지를 보시면 됩니다.)
가끔 callback를 작업해도 특정 조건에서만 실행이 된다면, 잘 실행되는지를 확인하기 위해서 특정조건을 맞추기 위해 불편한 작업을 반복해야 하거나 특정 조건이 맞을 때까지 기다려야 하는 경우가 있습니다. (예를 들면 파일을 머지할 때 머지되는 오브젝트의 개수가 몇 개 이상이라던가 특정 오브젝의 이름이 다르다던가 같은 경우입니다.)
이를 피하기 위해 가상으로 조건을 맞춰 주는 명령어가 있습니다.
MaxScript Editor에서 다음과 같이 입력한 다음 실행해 봅시다. (단 위에 작업한 callback가 먼저 실행되어야 합니다.)
1
|
callbacks.broadcastCallback #animateOff
|
cs |
#animateOff의 callback이 실행이 됩니다
위 명령어는 여러가지 이유로 바로 실행해 볼 수 없는 callback을 시뮬레이션해주는 것입니다.
하지만 모든 callback에서 가능한 것은 아니고, #preRenderFrame, #postRenderFrame과 같이 렌더러에서만 호출할 수 있는 것과 같은 특수한 경우에는 불가능합니다.
Additional Notification Information on the Callback
callback을 사용하다보면 해당 callback의 추가적인 내용에 대한 정보를 확인해야 하는 경우가 있습니다. (저는 그런 경우가 없었는데 더 어려운 스크립트를 작업하면 필요한가 봅니다. ㅎㅎㅎ)
다음과 같은 명령어를 사용하여 확인을 할 수 있습니다.
callbacks.notificationParam()
이 명령어는 callback의 추가 정보를 제공하기 위해 callback 스크립트에서 호출 할 수 있습니다. 이 명령어에 의해 반환 되는 값은 callback유형에 따라 달라집니다. callback에 추가 정보가 없으면 'undefined'값이 반환 됩니다. - 라고 맥스 헬퍼에는 나와 있네요.
아마도 callback이 호출되어 실행되는 구간 (<script_string> | <script_stringstream>)에서 사용되며, 그때 호출된 callback에 따라 다른 값을 보여준다는 소리 같습니다.
그렇다면 MaxScript Editor에서
1
|
callbacks.addScript #filePostOpen " print (callbacks.notificationParam())" id:#myFileOpen
|
cs |
를 입력하고 명령어를 실행한 다음 맥스파일을 아무것이나 새로 열어 봅니다.
그러면 Listener에 다음과 같은 내용이 출력됩니다.
파일에 따라 다른 결과 값을 보여주기 때문에 여러분은 저와는 다른 결과가 나올 거라 생각됩니다.
사실 저도 저 내용이 어떤 것을 의미하는지는 잘 모르겠습니다.(죄송합니다. 헬퍼의 설명으로는 #filePostOpen은 렌더 사전 설정 파일이 열려있는 경우는 정수의 2, 그렇지 않은 경우는 undefined가 반환된다는데 다른 결과 값이 나와서 당황스럽네요.) 하여튼 값이 반환 된다면 정상 작동하는 겁니다. ㅎㅎ
해당 callback 형식에 따라 추가 내용이 있는 것과 없는 것이 있고 자세한 내용은 callback 형식들을 이야기하면서 설명하도록 하겠습니다.
오늘은 여기까지 설명하고 다음 시간에 계속 이어 가도록 하겠습니다.
'맥스스크립트 기본' 카테고리의 다른 글
Callback(7) : File Notifications(2) (0) | 2021.02.04 |
---|---|
Callback(6) : File Notifications(1) (0) | 2021.02.03 |
Callback(5) : Animation / Direct3D / FileLink Device Notification (0) | 2021.02.02 |
Callback(4) :콜백 이벤트 명과 notificationParam 반환(ActionItem) (0) | 2021.02.01 |
Callback(2) : 삭제 (0) | 2021.01.30 |
Callback(1) : 소개와 추가 (0) | 2021.01.29 |
Wire Parameter(2) (0) | 2019.12.17 |
Wire Parameter(1) (0) | 2019.12.16 |