“错误参数 #-1 到 'newImageRect'(预期代理,没有)”- Lua,使用 Corona SDK

" bad argument #-1 to 'newImageRect' (Proxy expected, got nil) " - Lua, using Corona SDK

所以我才开始学习如何使用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 is a hastebin of the game.lua, and here 是 menu.lua class 的 hastebin,可将场景从菜单切换到游戏。

我可以说第 87 行是导致问题的原因,newImageRect 的参数有问题,但除此之外我没有任何线索。

游戏 运行 在第一个 运行 上完美运行,但尝试重玩它会导致错误。 菜单文件中切换场景的代码在第13-17行。

感谢任何帮助,如果我很愚蠢并且遗漏了一些明显的东西,我们深表歉意。
谢谢!

编辑:错误是在尝试删除 game.lua 场景时引起的。

您正在用 timer.performDelay 呼叫 createAsteroid。所以,当游戏场景被破坏或隐藏时,你需要取消这个定时器。

asteroidSpawnTimer = timer.performWithDelay( asteroidSpawnTime, createAsteroid, 0 )

试试这个:

function scene:hide( event )
--[[...]]--
if ( phase == "will" ) then
    timer.cancel( gameLoopTimer )
    timer.cancel( asteroidSpawnTimer ) -- cancel it
--[[...]]--