1、lua里,可以把函数作为参数传到函数里,也可以作为其它函数的返回值。
这里举一个简单的例子
这个例子里,函数sayGoodbye被当做参数传入函数greet里面
-- 定义一个函数,接受一个函数作为参数
function greet(callback)
print("Hello!")
-- 调用传入的函数
callback()
end
-- 定义一个函数,作为回调函数
function sayGoodbye()
print("Goodbye!")
end
-- 调用 greet 函数,将 sayGoodbye 函数作为参数传入
greet(sayGoodbye)
2、此外,lua还支持匿名函数,这意味着你可以直接在调用函数时定义回调函数
greet(function()
print("Goodbye!")
end)
3、在cocos引擎的动作序列中,每个动作都会按照一定的顺序依次执行。使用回调函数可以确保在特定的时间点执行特定的操作。
CallFunc 是 Cocos 引擎中的一个动作类,用于在动作序列中执行一个回调函数。它接受一个函数作为参数,并在动作执行到该位置时调用该函数。
cc.Sequence:create 创建了一个动作序列 sequence,依次执行移动动作和回调函数动作。最后,通过 sprite:runAction(sequence) 执行动作序列,确保在图片创建之后再print。
-- 创建一个精灵对象
local sprite = cc.Sprite:create("image.png")
-- 创建一个移动动作
local moveAction = cc.MoveTo:create(2, cc.p(100, 100))
-- 创建一个回调函数动作
local callbackAction = cc.CallFunc:create(function()
print("动作执行完毕")
end)
-- 创建一个动作序列,依次执行移动动作和回调函数动作
local sequence = cc.Sequence:create(moveAction, callbackAction)
-- 执行动作序列
sprite:runAction(sequence)