我有一个古老的问题,Maxscripts在第一次运行时不能工作(从冷启动),因为函数在使用之前需要声明。
以下脚本将在第一次运行时失败:
fOne()
function fOne =
(
fTwo()
)
function fTwo =
(
messageBox ("Hello world!")
)我们得到这样的错误:“类型错误:调用需要函数或类,get :未定义”。第二次,脚本会运行得很好。
但是,向脚本添加转发声明后,我们不会再收到错误。好哇!但是该函数不再被调用。嘘!
-- declare function names before calling them!
function fOne = ()
function fTwo = ()
fOne()
function fOne =
(
fTwo()
)
function fTwo =
(
messageBox ("Hello world!")
)那么,转发声明在Maxscript中到底是如何工作的呢?
发布于 2013-04-15 16:49:41
对于我未来的自己:保持一切本地化。将节函数声明为(本地)变量。请注意定义函数的代码中的位置
( -- 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")
)
)发布于 2013-04-02 19:54:25
你不能在声明之前调用某个东西...它不是actionscript...它会在你第二次运行代码时起作用,因为它可以找到函数...
struct myFunc (
function fOne = (
fTwo()
),
function fTwo = (
messageBox ("Hello world!")
)
)
myFunc.fOne()发布于 2015-11-17 01:30:29
"::“是关键字。遗憾的是,这并不是一个广为人知或有文档记录的特性。http://lotsofparticles.blogspot.ie/2009/09/lost-gems-in-maxscript-forcing-global.html
::fOne() -- this will error if forward declaration is not working.
function fOne =
(
::fTwo()
)
function fTwo =
(
messageBox ("Hello world!")
)https://stackoverflow.com/questions/15759933
复制相似问题