2011-07-16 44 views
1

如何的onComplete事件参数传递给函数(LUA +科罗娜SDK)参数传递给函数如何的onComplete事件(LUA +电晕)

transition.to(obj, {time = 1000, x = toEnemy.x, y = toEnemy.y, onComplete = onHit}) 

---- 
transition.to(target, params) 
---- 

params is: 

params.time 
params.transition 
params.delay 
params.delta 
params.onStart 
params.onComplete 

没有“params.onCompleteParams” ,但我要在不使用全局变量

回答

9

Lua函数的参数传递给我的

功能实际上是closures。这意味着它们捕获在其范围内的函数之外的局部变量的值。

通过使用匿名函数作为onComplete处理,你可以做到以下几点:

-- save 'parameters' you need to pass as local variables 
local paramToPass = 'hello' 
local paramToPass2 = 'world' 
transition.to(obj, { time = 1000, x = toEnemy.x, y = toEnemy.y, 
    -- use an anonymous function as the onComplete handler 
    -- it captures the values of any local variables it references 
    onComplete = function(obj) 
     -- call your original function with your additional parameters... 
     onHit(obj, paramToPass, paramToPass2) 
    end 
}) 
+1

是的,我知道,但我想这样做,如果没有这个“拯救‘参数’。”但是现在,在查看文档后,我认为没有更多的“美丽”变体。非常感谢! – Pleerock