3
由于某些原因,如果else语句被执行了太多次,下面的代码会引发堆栈溢出错误。我试图让scene.targeting函数从传递参数objTable
中选择一个目标,但只有具有.tgtFlag == false
的目标才是有效的选择。如果函数选择一个具有.tgtFlag == true
的目标,它会调用传入同一组参数的scene.targeting函数。在corona sdk递归函数中的Lua堆栈溢出
中断的行是local theTarget = params.objTable[math.random(1, #params.objTable)]
,但仅在调用else scene.targeting(params) end
多次之后。
任何帮助将不胜感激。
function scene.targeting(params) -- Targeting functions
function animateTarget(target)
if target.savedFlag == false then
transition.to(target, {time = 100, y = target.y - 15})
transition.to(target, {time = 100, delay = 150, y = target.y, onComplete = animateTarget} )
end
end
local theTarget = params.objTable[math.random(1, #params.objTable)]
if theTarget.tgtFlag == false then
theTarget.tgtFlag = true
animateTarget(theTarget)
else
scene.targeting(params)
end
end
我不知道尾巴呼叫。伟大的小技巧不使用堆栈。 – joed4no