else 문이 너무 많이 실행되면 다음과 같은 이유로 아래 코드에서 스택 오버플로 오류가 발생합니다. 나는 장면을 가져 오려고 노력 중이다. 목표 지정 기능은 objTable
에서 대상을 선택하지만 매개 변수로 전달 된 대상은 .tgtFlag == false
만 유효합니다. 함수가 .tgtFlag == true
을 가진 대상을 선택하면 동일한 매개 변수 집합을 전달하는 scene.targeting 함수를 호출합니다.코로나 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