我试图取消在另一个“触摸事件”函数内的“触摸事件”函数中启动的计时器,如下所示:
local function startNewGame(event)
if(event.phase=="ended")then
local function animationImmaginiOggetti()
for i=1, 7 do
transition.to(immaginiOggettiAvvioPartita[i],
{ time = 200, delay = 0, xScale = 0, yScale = 0, alpha = 0})
end
end
local function removeImmaginiOggetti()
if immaginiOggettiAvvioPartita[1] then
for i=1, 11 do
immaginiOggettiAvvioPartita[i]:removeSelf()
immaginiOggettiAvvioPartita[i] = nil
end
end
end
local tmrAIO = timer.performWithDelay(4000, animationImmaginiOggetti, 1)
local tmrRIO = timer.performWithDelay(4250, removeImmaginiOggetti, 1)
end
end
local function replayGame(event)
if(event.phase=="ended")then
timer.cancel(tmrAIO)
timer.cancel(tmrRIO)
end
end
startBTN:addEventListener("touch", startNewGame)
replayBTN:addEventListener("touch", replayGame)
我的问题是电晕卷土重来
“文件: ?Attempt to index a nil value" on timer.cancel (tmrAIO)
.
我究竟做错了什么?
问题如下,变量tmrAIO
and tmrRIO
是函数局部的startNewGame
,这意味着它们只能从定义的范围内访问startNewGame
现在您正尝试从该函数外部访问它们,并且它们没有在该范围内定义,这就是为什么nil
value.
解决方案:
local tmrAIO
local tmrRIO
local function startNewGame(event)
if(event.phase=="ended")then
local function animationImmaginiOggetti()
for i=1, 7 do
transition.to(immaginiOggettiAvvioPartita[i],
{time = 200, delay = 0, xScale = 0, yScale = 0, alpha = 0})
end
end
local function removeImmaginiOggetti()
if immaginiOggettiAvvioPartita[1] then
for i=1, 11 do
immaginiOggettiAvvioPartita[i]:removeSelf()
immaginiOggettiAvvioPartita[i] = nil
end
end
end
tmrAIO = timer.performWithDelay(4000, animationImmaginiOggetti, 1)
tmrRIO = timer.performWithDelay(4250, removeImmaginiOggetti, 1)
end
end
local function replayGame(event)
if(event.phase=="ended")then
timer.cancel(tmrAIO)
timer.cancel(tmrRIO)
end
end
startBTN:addEventListener("touch", startNewGame)
replayBTN:addEventListener("touch", replayGame)
正如你所看到的,我宣布tmrAIO
and tmrRIO
范围之外startNewGame
使它们可以在该文件内的任何位置访问。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)