2013-04-02 5 views
1

Maxscripts를 사용하기 전에 함수를 선언해야하기 때문에 Maxscripts가 처음 실행될 때 (콜드 스타트에서) 작동하지 않는 문제가 발생했습니다. 우리는 오류 얻을Maxscript 함수 전달 선언

fOne() 
function fOne = 
(
    fTwo() 
) 

function fTwo = 
(
    messageBox ("Hello world!") 
) 

:

다음 스크립트가 실행되어 처음 실패 "유형 오류 : 요구 함수 또는 클래스에 전화를 가지고 : 정의되지 않은". 두 번째로 스크립트가 정상적으로 실행됩니다.

그러나 스크립트에 전달 선언을 추가하면 더 이상 오류가 발생하지 않습니다. 훌라! 하지만 함수는 더 이상 호출되지 않습니다. 우우!

-- declare function names before calling them! 
function fOne =() 
function fTwo =() 

fOne() 
function fOne = 
(
    fTwo() 
) 

function fTwo = 
(
    messageBox ("Hello world!") 
) 

따라서 Maxscript에서 전달 선언은 실제로 어떻게 작동합니까?

답변

1

뭔가를 호출 할 수 없습니다 : 모든 것을 로컬로 유지하십시오. 섹션 함수를 (로컬) 변수로 선언하십시오. 코드에서 함수를 정의하는 위치를 알아 두십시오.

(-- put everything in brackets 

    (
    -- declare the second function first! 
    local funcTwo 

    -- declare function names before calling them! 
    function funcOne =() 
    function funcTwo =() 

    funcOne() 

    function funcOne = 
    (
    funcTwo() 
    ) 

    function funcTwo = 
    (
    messageBox ("Hello world") 
    ) 
) 
2

당신은 내 미래의 자기에 ... 그것이 기능을 찾을 수 있기 때문에 코드를 실행하는 두 번째 시간을 작동 ... 그것은 액션 아니에요 ...를 선언하기 전에

struct myFunc (
    function fOne = (
     fTwo() 
    ), 
    function fTwo = (
     messageBox ("Hello world!") 
    ) 
) 
myFunc.fOne() 
+0

아 당신이 [예]를 발견 (http://districtf13.blogspot.co.uk/2011/04/maxscript-function-pre-declaration.html) 내가했던 그. 더 많은 괄호와 쉼표로 함수를 넣는 것 외에도 다른 방법이 있어야합니다. –