Как передать параметры в функцию в событии onComplete (Lua + Corona) - PullRequest
1 голос
/ 16 июля 2011

Как передать параметры в функцию в событии onComplete (Lua + Corona SDK)

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", но я хочу передать параметры в мой

функция без использования глобальных переменных

1 Ответ

9 голосов
/ 16 июля 2011

Функции Lua на самом деле замыкания . Это означает, что они фиксируют значения локальных переменных вне функции, которые находятся в их области видимости.

Используя анонимную функцию в качестве обработчика 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
})
...