在 Corona SDK 中,从“enterFrame”函数中调用函数只需调用一次。

我想知道在 Corona SDK 中如何从“进入帧”函数中调用函数一次。

假设我有下面的代码:

local function funa()
    i = i+1
    funb()
end

Runtime:addEventListener("enterFrame", funa)

除了想要在每一帧增加“i”,我还希望运行“funb”,但只运行一次,而不是每一帧都运行一次,但我不知道如何实现。

有什么想法吗?

点赞
用户3735873
用户3735873

另外一个更简单且更明显的解决方案是使用全局变量来跟踪这个,但你也可以使用闭包。例如:

local
function funa()
  local run_already = false
  local i = 0
  return function()
           i = i+1
           if not run_already then
             funb()
             run_already = true
           end
         end
end

funa = funa()
funa()
funa()
2015-04-26 15:02:00
用户2653067
用户2653067
local run_flag = false

local function funa()
    i = i+1
    if not run_flag then
        funb()
        run_flag = true
    end
end

Runtime:addEventListener("enterFrame", funa)

现在 i 每一帧都会加一,但 funb() 只会被调用一次。

2015-04-27 05:19:48