我在lua中创建了一个游戏。在电晕模拟器中,一切似乎都很好用。但是当我在我的设备上安装游戏时,他的游戏在连续3-4次迭代后开始挂起。 (意思是当我点击“重播”再次播放时,游戏开始挂起。 这就是我试过的:
function animal()
local animal=display.newImage("animal.png")
local z= math.random(1,1000)
if z<=300
then
animal.x=330
animal.y= centerY + 80
elseif z<=650
then
animal.x= centerX + 60
animal.y=centerY + 100
else
animal.x= 1180
animal.y=centerY + 100
end
animal.trans=transition.to (animal, {time=1001, y=-150, alpha=1, onComplete = gameOver})
animal: addEventListener ( "tap" , disapp )
function remove_listen_animal()
Runtime: removeEventListener ( "tap" , disapp )
return
end
function remove_animal()
display.remove(animal)
end
end
local function disapp (event)
local obj = event.target
transition.cancel (event.target.trans)
display.remove(obj)
animal()
return
end
function gameOver()
transition.cancel()
remove_animal() --removes object from gameOver screen
remove_listen_animal() --removes animal event listener
scoreText.text=nil
mainScreen() --This is the function invoked at very first when game is started. In order to restart the game,I re-invoked this function.
end
现在当我开始游戏时,第一次运行在设备上变得完美。但是当游戏结束时,我再次点击“玩”游戏。按钮播放,然后游戏开始挂起。 请帮帮我吗? 此外,我希望对象的移动速度[如在transition.to()]中快。这可能是2-3次迭代后游戏停止的原因吗?
P.S我认为问题在于gameOver功能。在调用gameOver函数时,是否有任何方法可以杀死/结束所有正在运行的操作? 因为当我关闭它后重新启动游戏时,第一次迭代再次运行正常,但后来再次挂起。
请帮忙吗? 感谢
答案 0 :(得分:0)
你在游戏中使用composer吗?如果没有,当你正确使用它时,作曲家会解决一些关于内存泄漏的问题。试试这个:
function remove_animal()
display.remove(animal)
animal = nil
end
并且避免在全局范围内显示您的函数,如果仅在某个场景中需要该函数,则始终将其置于局部。