2014-02-15 1 views
0

저는 Corona의 물리 엔진을 사용하고 있으며 문제가 있습니다. 충돌이 발생하면 selfevent은 테이블 값을 가지고 있음에도 불구하고 nil입니다 (테이블은 nil을 제외한 모든 값을 보유 할 수 있습니다). 문은 두 물체가 충돌하는 인쇄해야하는 경우Corona/Lua : 충돌 후 테이블 값에 액세스 할 수 없습니다.

function onCollision(self,event) 
    print(event); -- output -> table: 097EF680 
    print(self); -- output -> table: 098349D0 
    if (event.phase == "began") then 
     print(self.myName .. ": collision began with " .. event.other.myName) 
    end 
end 

는, 그러나 나는 오류 인쇄 문을 추가하는 나를 이끌 것입니다

...\main.lua:270: attempt to concatenate field 'myName' (a nil value) 

를 얻을. 충돌은이 오류가 충돌에서만 발생하고 두 값은 ID가 있으므로 존재해야하기 때문에 감지됩니다. 하지만 이벤트 .myName, 이벤트 [1]을 통해 액세스하려고하면 nil 값을 반환합니다.

myName은 물론 정의되며 충돌하는 두 개체에 대해서는 nil이 아닙니다.

+0

addEventListener 호출을 표시 할 수 있습니까? – Schollii

답변

0

lua에서 ':'구문을 사용하여 이벤트 처리기를 추가했는지 확인하여 'self'를 보냅니다. 이처럼 : 사용하는 경우 가 '자체가'암시 ':'당신이 필요로하는 경우

function crate1:collision(event) 
    ... 
end` 

crate1:addEventListener("collision", crate1)

지금, 당신은 crate1 객체의 '충돌'기능을 정의 할 필요가 더 많은 예제는 코로나 문서를 살펴 봅니다. http://docs.coronalabs.com/guide/physics/collisionDetection/index.html

관련 문제