点击屏幕过多时断言失败
Assertion Failed when tapping the screen too much
我正在开发一款游戏,可以将子弹投向点击的方向。但是当我在播放器的中心点击 much/multiple 次时,出现以下错误:
Runtime error
assertion failed!
stack traceback:
[C]: in function 'assert'
?: in function '?'
?: in function '_initTween'
?: in function 'to'
/Users/User/Desktop/MD/screen1.lua:61: in function </Users/User/Desktop/MD/screen1.lua:31>
?: in function <?:221>
但是当我慢慢点击时,它并没有抛出错误。这是 screen1.lua 的第 61 行:
bullet.trans = transition.to(bullet, { time=distance/bulletSpeed, y=farY, x=farX, onComplete=nil})
感谢大家的帮助!
编辑:
添加此行后:
print("Values for transition: ", bullet, distance, bulletSpeed, farY, farX)
这是结果:
Distance 和 fary 都是 Nan。
如何调试这样的问题:
作为解决这个问题的第一步,我建议你在调用之前打印出调用transition.to()
所涉及的变量的值:
print("Values for transition: ", bullet, distance, bulletSpeed, farY, farX)
可能有些东西 set/initialized 不正确。它还会显示您是否以及何时尝试在 nil
对象上调用转换。
更新:
所以进一步的调查表明,在某些时候你正试图通过 NaN
(来自手册:“(不是数字是用于表示未定义或无法表示的数值结果的特殊值,例如 0/ 0.)") 作为 transition.to
的参数,它对此表示反对。当您计算 distance
和 farY
时,您应该查看您的假设。你能除以零还是在某处取负数的平方根?
我怀疑当你快速敲击时,你在某个时候不小心碰到了你正在计算距离的位置。你的距离算法中的某些东西导致它的数学失败并吐出 NaN
(这基本上是除以零或其他数学问题的占位符)。
在距离计算中检查 NaN 并将其替换为 0。更好的是,改进计算。您可以使用我编写的库 - 查找 lengthOf
函数:
我正在开发一款游戏,可以将子弹投向点击的方向。但是当我在播放器的中心点击 much/multiple 次时,出现以下错误:
Runtime error
assertion failed!
stack traceback:
[C]: in function 'assert'
?: in function '?'
?: in function '_initTween'
?: in function 'to'
/Users/User/Desktop/MD/screen1.lua:61: in function </Users/User/Desktop/MD/screen1.lua:31>
?: in function <?:221>
但是当我慢慢点击时,它并没有抛出错误。这是 screen1.lua 的第 61 行:
bullet.trans = transition.to(bullet, { time=distance/bulletSpeed, y=farY, x=farX, onComplete=nil})
感谢大家的帮助!
编辑: 添加此行后:
print("Values for transition: ", bullet, distance, bulletSpeed, farY, farX)
这是结果:
Distance 和 fary 都是 Nan。
如何调试这样的问题:
作为解决这个问题的第一步,我建议你在调用之前打印出调用transition.to()
所涉及的变量的值:
print("Values for transition: ", bullet, distance, bulletSpeed, farY, farX)
可能有些东西 set/initialized 不正确。它还会显示您是否以及何时尝试在 nil
对象上调用转换。
更新:
所以进一步的调查表明,在某些时候你正试图通过 NaN
(来自手册:“(不是数字是用于表示未定义或无法表示的数值结果的特殊值,例如 0/ 0.)") 作为 transition.to
的参数,它对此表示反对。当您计算 distance
和 farY
时,您应该查看您的假设。你能除以零还是在某处取负数的平方根?
我怀疑当你快速敲击时,你在某个时候不小心碰到了你正在计算距离的位置。你的距离算法中的某些东西导致它的数学失败并吐出 NaN
(这基本上是除以零或其他数学问题的占位符)。
在距离计算中检查 NaN 并将其替换为 0。更好的是,改进计算。您可以使用我编写的库 - 查找 lengthOf
函数: