电晕运行时错误:“尝试调用零值”

时间:2013-07-08 19:07:20

标签: class function lua corona collision

下面的代码来自一个在太空射击游戏中创建并返回外星飞船到main.lua的类。

我需要包含一个函数来确定如果这艘船遇到一个物体会发生什么,但是当我运行代码时,外星人的船确实遇到了什么,我得到了Corona运行时错误:

  

尝试调用nil值 - 启动追溯:[C]:?

-- COLLISION FUNCTION
local function xenosColl(event)
    if (event.phase == "began") then
    print("hahf")
    end
end


-- XENOS SHIP
function xenosShip.new()

    local newXenosShip=display.newSprite( alShipSheet, alShipSeqData )
    newXenosShip:play()
    newXenosShip.x=580
    newXenosShip.y=70
    newXenosShipShape = {0,-40 , 60,0 , 0,40 , -60,0}
    newXenosShip.myName = "newXenosShip"
    physics.addBody(newXenosShip,"dynamic", {density = 1.0, friction = 0.3, bounce = 1, shape = newXenosShipShape})
    newXenosShip:applyForce(0,2000,newXenosShip.x,newXenosShip.y)

    newXenosShip:addEventListener("collision", xenosColl)

    return setmetatable(newXenosShip, xenosShip_mt)

end

return xenosShip

如果我删除碰撞eventlistener,没有错误,外星船只碰到另一个对象,所以它试图调用该函数的方式一定有问题,但我无法弄清楚是什么。 / p>

1 个答案:

答案 0 :(得分:3)

我像你一样创建相同的对象,当我添加时我得到错误 return setmetatable(newXenosShip, xenosShip_mt)我认为当你使用setmetatable时它会导致对象变为nil。尝试删除metatable