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

我刚开始学习使用 Corona SDK 制作游戏。我正在制作一个小行星区射击游戏,但是在尝试运行游戏时出现了以下错误。

(我知道几乎有一个这个问题的完全复制品,但是它没有0个答案,而且唯一的评论不适用于我。)

以下是完整的错误和堆栈跟踪:

19:21:16.393  错误: 运行时错误
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  堆栈跟踪:
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>

这里是 game.lua 的快速粘贴板内容,这里是 menu.lua 类的快速粘贴板内容,它会在菜单和游戏之间切换场景。

我可以告诉你,第87行引起了问题,newImageRect的参数有问题,但除此之外,我毫无头绪。

游戏可以在第一次运行时完美运行和播放,但尝试重新播放它会导致错误。菜单文件中切换场景的代码在第13-17行。

如果我漏掉了什么明显的东西,请不要介意,感谢您的帮助!

编辑:当它尝试删除 game.lua 场景时,会导致错误。

点赞
用户6312494
用户6312494

你在调用createAsteroid函数时使用了timer.performDelay方法。因此,当游戏场景被销毁或隐藏时,需要取消此计时器。

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

试试这个:

function scene:hide( event )
--[[...]]--
if ( phase == "will" ) then
    timer.cancel( gameLoopTimer )
    timer.cancel( asteroidSpawnTimer ) -- 取消它
--[[...]]--
2016-08-03 02:54:45