我的代码中有一个计时器,它每1秒生成一次对象。 当一个物体与" deathObj"场景从scene2变为scene1。 但是当我从scene1返回到scene2时,定时器被调用两次,如果我重试将被调用4次等... 如何调用计时器一次?
function scene:show( event )
local sceneGroup = self.view
local phase = event.phase
if ( phase == "will" ) then
elseif ( phase == "did" ) then
local function spawn()
--things for spawn the object
end
end
local function deathObjCollision(self, event)
if (event.phase == "began" ) then
composer.gotoScene("scene1")
end
end
deathObj = display.newRect(300,1900,1600,100)
physics.addBody(deathObj, "static", {density=1.0, friction=0.5, bounce=0.3})
deathObj.collision = deathObjCollision
deathObj:addEventListener( "collision", deathObj )
spawnTimer = timer.performWithDelay(1000, spawn, -1)
end
end
答案 0 :(得分:0)
从场景2更改为场景1时,尝试暂停或取消计时器。
答案 1 :(得分:0)
当游戏第二次结束时我解决了这个问题。
timer.cancel(spawnTimer)
spawnTimer = timer.performWithDelay(seconds, spawn, -1)
答案 2 :(得分:0)
跟踪你的代码,你似乎有太多的目的。让代码缩进正确对您自己的理智以及帮助那些想要帮助您的人来说非常重要。
如果我正确读取你的代码,你的计时器就在“if - then - else”语句之外,该语句测试你是处于“将”阶段还是“确实”阶段。场景:show()事件触发两次,一次关闭屏幕(“将”),一次在屏幕上(“完成”)。由于你的计时器在那之外,它将执行两次。