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