所以我刚开始学习如何使用Corona SDK来创建游戏。制作小行星射击型游戏,并在尝试玩游戏时遇到此错误。
(我知道这个问题几乎有一个完全复制品,但它有0个答案,唯一的评论不适用于我。)
这是完整错误+堆栈跟踪:
19:21:16.393 ERROR: Runtime error
19:21:16.393 C:\Users\Some User\Documents\Corona Projects\StarExplorer\game.lua:87: bad argument #-1 to 'newImageRect' (Proxy expected, got nil)
19:21:16.393 stack traceback:
19:21:16.393 [C]: in function 'newImageRect'
19:21:16.393 C:\Users\Some User\Documents\Corona Projects\StarExplorer\game.lua:87: in function '_listener'
19:21:16.393 ?: in function <?:167>
19:21:16.393 ?: in function <?:169>
Here是game.lua的哈希,here是menu.lua类的哈希,它将场景从菜单切换到游戏。
我可以说第87行引起了这个问题,并且newImageRect的参数出了问题,但除此之外我没有任何线索。
游戏在首次运行时运行并完美播放,但尝试重播会导致错误。 切换菜单文件中场景的代码位于第13-17行。
感谢任何帮助,对不起,如果我是愚蠢的,并且遗漏了一些明显的东西 谢谢!
编辑:尝试删除game.lua场景时会导致错误。
答案 0 :(得分:1)
您使用createAsteroid
致电timer.performDelay
。因此,当游戏场景被破坏或隐藏时,您需要取消此计时器。
asteroidSpawnTimer = timer.performWithDelay( asteroidSpawnTime, createAsteroid, 0 )
试试这个:
function scene:hide( event )
--[[...]]--
if ( phase == "will" ) then
timer.cancel( gameLoopTimer )
timer.cancel( asteroidSpawnTimer ) -- cancel it
--[[...]]--