Error handling 第172行和第218行出现错误,没有文件名,只有问号

Error handling 第172行和第218行出现错误,没有文件名,只有问号,error-handling,lua,runtime-error,coronasdk,Error Handling,Lua,Runtime Error,Coronasdk,Corona SDK模拟器版本2013.1137(2013.6.7)显示以下错误: Corona Simulator Runtime error File: ? Attempt to perform arithmetic on field '?' (a function value) stack traceback: [C]: ? ?: in function <?:172> ?: in function <?:218> 导致错误的实际行是

Corona SDK模拟器版本2013.1137(2013.6.7)显示以下错误:

Corona Simulator Runtime error

File: ?

Attempt to perform arithmetic on field '?' (a function value)

stack traceback:
    [C]: ?
    ?: in function <?:172>
    ?: in function <?:218>
导致错误的实际行是倒数第二行:

transition.to(gNonEmpty3, { time = 1000, x = 100, easing.outExpo })
你可以通过评论来查看它

Corona文件指出:

You should have at least one DisplayObject inserted into a
Display Group before you change or read any of the properties
of the group (e.g., x, y, setReferencePoint(), etc.).
因此,使用transition.togEmpty1gEmpty2gEmpty3上。正如所料,transition.to的前两个块(总共六个调用)的行为相同,但放松除外 对于前三个调用,easing.linear是默认值,对于其他三个调用,easing.outExpo是默认值

如果您在编写transition.to调用时出错,并且编写了与前三次transition.to调用类似的内容,其中在easing函数的规范中缺少transition=部分,那么令人惊讶的是,只有针对非空组的调用,gNonEmpty3对无法理解的错误消息负责

问题

  • 当您遇到一个没有行号、没有文件名、只有问号的错误时,在Corona SDK中应该怎么做
  • 为什么Corona SDK不能在172和218两个行号之外提供有意义的报告
  • 为什么会发生这种错误?我的理论是,转换.to不会执行很多错误检查;如果目标为空组,则不会注意到指定缓解功能的错误;这可能与不应使用empty groups属性有关,因此可能transition.to或其内部更新回调会发现组为空,并直接返回而不做任何操作。相反,对于非空组,缺少的转换=会导致触发一些代码,而不一定是缓解代码,并且在该代码中会发生实际错误
  • config.lua

    application = {
        content = {
            width = 320,
            height = 480, 
            scale = "letterBox",
            fps = 30
        } 
    }
    
    原始帖子(过时)

    我很难找到Corona SDK中的错误。 该错误导致模拟器显示以下消息:

    Corona Simulator Runtime error
    
    File: ?
    
    Attempt to perform arithmetic on field '?' (a function value)
    
    stack traceback:
        [C]: ?
        ?: in function <?:172>
        ?: in function <?:218>
    
    我把那条线夹在两张照片之间:

    print("Before", button, b1) 
    button:insert(b1)
    print("After")
    
    模拟器控制台中打印以下消息:

    Corona Simulator[9801:f03] Before    table: 0x11daf4aa0    table: 0x1152363a0
    Corona Simulator[9801:f03] After
    
    而不是你的台词:

    transition.to(gNonEmpty3, { time = 1000, x = 100, easing.outExpo })
    
    使用:


    在corona中,当您有一些
    错误语法
    错误逻辑
    时,会出现此类错误消息。因此,首先检查这些问题。在(您使用的)行之间插入
    print
    ,是查找此类错误行的最佳解决方案


    继续编码…………:)

    我认为你提供的信息不足以让我们帮助你。Lua中的几乎所有内容都表示为一个表,因此不需要打印。只需尝试插入更多打印即可跟踪运行时错误发生的时间点。不过,听起来好像你在尝试在一些算术中使用函数,或者你可能使用了一个已经被其他东西占用的变量名。嗨,庞特斯,谢谢你的评论。我的代码中有更多的print语句,但我仍然无法检测程序何时停止工作。我认为这是因为使用了transition.to和onComplete回调。在异步回调中,可能事情搞砸了,我不知道具体是哪一个。我想我会继续添加更多的图片,但我确实不知道从哪里开始。正如@Pontus所建议的:发布更多代码。你真的没有给我们什么背景来分析这个问题。您可能有一个函数存储在属于某个数字的错误位置。
    按钮是
    组对象
    还是
    显示对象
    ?在这种情况下有点可疑,因此,不确定是否可以将
    插入
    DisplayObject
    到另一个
    DisplayObject
    @Kamiccolo感谢您的观察,按钮是一个GroupObject,但请检查上面的注释,因为您的思路是正确的。文档规定,在更改或读取显示组的任何属性(例如,x、y、setReferencePoint()等)之前,应至少将一个DisplayObject插入显示组。具有讽刺意味的是,虽然将按钮留空在某种程度上是Corona中的一个错误,但它可能会抵消transition.to中的错误。在操作方面,transition.to会发现按钮有问题,并且缓解功能代码不会启动。谢谢。我意识到我写得不是很清楚,但我知道代码中的错误在哪里;我的问题更像是:为什么科罗纳不能提供一份像样的报告?在我的项目中,我发现了缺失的过渡=纯属偶然。当遇到如此模糊的错误消息时,我该怎么办?
    Corona Simulator[9801:f03] Before    table: 0x11daf4aa0    table: 0x1152363a0
    Corona Simulator[9801:f03] After
    
    transition.to(gNonEmpty3, { time = 1000, x = 100, easing.outExpo })
    
    transition.to(gNonEmpty3, { time = 1000, x = 100, transition =  easing.outExpo })