2013-04-02 122 views
1

我有Maxscripts在第一次運行時(從冷啓動)不能正常工作的問題,因爲函數需要在使用之前聲明。Maxscript函數前向聲明

下面的腳本將無法運行它的第一次:

fOne() 
function fOne = 
(
    fTwo() 
) 

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

我們得到的錯誤:「類型錯誤:調用需要的函數或類,得到:未定義」。第二次,腳本將運行良好。

但是,向腳本添加前向聲明後,我們不會再出現錯誤。 Horrah!但該功能不再被調用。噓!

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

fOne() 
function fOne = 
(
    fTwo() 
) 

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

那麼,前置聲明如何在Maxscript中真正起作用呢?

回答

1

爲了我的未來的自己:保持一切地方。將section函數聲明爲(局部)變量。注意在代碼去向你定義的功能

(-- 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),我做到了。除了將函數裝入更多的括號和逗號之外,還有另外一種方法。 –