2013-07-08 3 views
1

아래의 코드는 우주 사수 게임에서 main.lua로 외계 우주선을 생성하여 반환하는 클래스의 코드입니다.코로나 런타임 오류 : "무효 값 호출 시도"

나는이 배는 객체 안타 경우 발생하는 결정하는 기능을 포함해야하지만이 코드를 실행하고 외계 우주선이 뭔가에 충돌 않을 때, 나는 코로나 런타임 오류 얻을 :

attempt to call a nil value - start traceback: [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 

충돌 이벤트 수신기를 제거하면 오류가없고 외계 우주선이 다른 물체에 충돌하기 때문에 함수를 호출하는 방법에 문제가있을 수 있지만 무엇을 알아 내지 못합니다.

+0

오류가 발생했습니다. #이 문제가 발생했습니다. nil 값의 변수 이름은 무엇입니까? – greatwolf

+0

코로나는 내가 거기에 올려 놓은 메시지보다 더 이상 정보를 제공하지 않습니다. – Ravn

답변

3

나는 당신이했던 것처럼 똑같은 객체를 만들고, 내가 덧붙일 때 오류가 발생합니다. return setmetatable(newXenosShip, xenosShip_mt) 나는 setmetatable을 사용할 때 객체가 0이 될 것이라고 생각합니다. metatable을 (를) 삭제하려고 시도하십시오.

+0

그것이 작동하는 것, 감사합니다! 여기의 튜토리얼 (http://www.coronalabs.com/blog/2011/09/29/tutorial-modular-classes-in-corona/)은 수업을 만들 때 메타 테이블 부분이 필수적이라고 생각하게했습니다. – Ravn

관련 문제