0

当我尝试执行以下代码时,它给了我这个错误:

尝试索引字段“其他”(零值)

但我不知道为什么。

编码:

function onCollision(event)
 if event.phase == "began" then 
    if event.other.star == "star" then
       score = score + 1
    elseif event.other.mine1 == "mine1" then
       if jet.collided == false then
         timer.cancel(tmr)    
         jet.collided = true    
         jet.bodyType = "static"
         explode()
       end
     end
   end
 end

提前致谢 :)

4

1 回答 1

5

正如@lhf 和@RBerteig 所说的那样,问题是event.othernil因此尝试访问该star成员无法尝试索引 nil 值。

假设event.other确实可以nil,解决您的问题的惯用方法是在前面的 if 中添加一个 nil 检查if event.phase == "began" and event.other then,因为 if 和 else 条件都依赖于event.other设置。

function onCollision(event)
 if event.phase == "began" and event.other then 
    if event.other.star == "star" then
       score = score + 1
    elseif event.other.mine1 == "mine1" then
       if jet.collided == false then
         timer.cancel(tmr)    
         jet.collided = true    
         jet.bodyType = "static"
         explode()
       end
    end
  end
 end

如果您想知道“尝试索引字段”的消息,您还可以在此处阅读有关lua 索引元方法的更多信息

于 2013-10-24T00:08:10.437 回答