偶尔会出现随机错误:试图将 nil 与数字进行比较,这是 Corona SDK 的错误。
2016-1-17 1:58:53
收藏:0
阅读:79
评论:2
我的应用程序偶尔会抛出以下错误:
gamePlay.lua:121: attempt to compare nil with number
该函数将对象从屏幕右侧移动到左侧。当它移出50像素时,对象应该被移除。以下是该方法的代码:
function moveObject(self,event)
if (self.x)<-50 then --这是第121行
--remove object
Runtime:removeEventListener("enterFrame", event.self)
display.remove(event.target)
else
self.x = self.x-self.speed --以值速度向左移动对象
end
end
当调用此方法并转到重新启动屏幕时,会弹出错误:
------当球撞到另一个对象时,转到重新启动场景------------
local function onCollision( self,event )
if(event.object2.name == "bonus")then--如果我们击中奖励球
event.object2:removeSelf()
--set score
local currentScore =game.returnScore()
game.setScore(currentScore*2)
scoreText.text = game.returnScore()
Runtime:removeEventListener("enterFrame", event.object2)
else
composer.gotoScene("restart")
Runtime:removeEventListener("touch", onObjectTouch)
end
end
ball.collision = onCollision
Runtime:addEventListener( "collision", ball )
有什么想法可能会发生什么?这种错误很少发生,可能是每15次中的1次。
点赞
用户148569
我曾经通过不仅仅检查 "self" 是否为空,而且还要检查 "self.x" 是否为空来解决类似的问题。所以...
如果 self ~= nil 并且 self.x ~= nil 并且 self.x < -50 然后
我不是完全确定为什么这样可以,但我猜测 corona 是删除了显示对象的属性而不是对象本身。
2016-01-30 18:12:38
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
我认为这与您的事件侦听器有关。我有时会发现在场景更改后,Corona 仍然会运行事件侦听器。我猜球在事件侦听器停止之前已经被清除(删除),而有时侦听器仍然在清理之前运行。
要解决此问题,您可以尝试:
先删除侦听器,再删除球
在 if 检查之前简单地添加一个 null 检查