2014-07-15 15 views
2

코로나 SDK로 게임을 프로그래밍하는 데 문제가 있습니다. 나는 다른 객체 (테이블에 저장 됨)를 떨어 뜨리고 "터치"이벤트 리스너를 사용하여 객체를 만질 때 수행 할 작업을 정의합니다. 그러나 화면 하단에 오브젝트가 닿지 않은 경우에도 액션을 정의하고 싶습니다. 내가 여러 방법을 시도하고 모든 하나의 "(오류가 생성되지 않음)하지만"정의 된 작업이 실행되지 않습니다 "일하고있다 ... 일종의"비 접촉 이벤트 listerner "정의 할 수있는 방법이 있습니까 ?? 여기 내 코드의 listerner 부분입니다 (이 예제에서는 코드가 작동하지만 "Game Over"는 인쇄되지 않습니다).Corona SDK에서 "비 터치 이벤트 수신기"를 정의하는 방법은 무엇입니까?

많은 도움을 주셔서 감사합니다.

local function BlackBalloon() 

local Black = display.newImageRect("BlackBallon.png", 80, 120) 

function Black:touch (event) 
    if event.phase == "began" then 
     score = score + 1 
     print (score) 

    elseif Black.y >= 540 then 
     print ("Game Over") 
    end 
return true 
end 

Black:addEventListener("touch", Black) 
return Black 
end 

답변

1

개체의 "순도"검사기와 같은 것은 없습니다. 생성 된 객체 Black.touched = false을 생성 할 때 생성 된 객체에서 변수를 간단히 만듦으로써이를 시뮬레이션 할 수 있습니다.이 객체를 만진 후에는 true으로 변경하십시오.

이 작업을 수행하는 기본 기능을 알려 드리겠습니다. 터치를 감지하면 변수 x를 설정하여 검은 색 객체 인 에 변수를 추가해야합니다. Black.touched = true을 입력하고 gameOverDetection 함수에서 해당 변수를 확인하십시오.

코드에이 함수를 추가하십시오. 터치 이벤트 객체에 발생하면

-- Function to handle detection. 
local function gameOverDetection() 
    if Black.y > 540 then 
     print ("Game Over") 
    end 
end 

가 자신의 코드가 작동하지 않습니다 이유를 설명하기 위해 코드

-- Listener to check on each entered frame. 
Runtime:addEventListener("enterFrame",gameOverDetection) 

의 하단에있는이 청취자를 추가 기능 Black:touch(event) 만이라고합니다. 그래서 물론 행동의

  1. 블랙 터치가 새로운 경우 (시작과 함께)이 경우
  2. 당신은 당신이 추가,
  3. 을 확인 감동 도착입니다 점수 + 1
  4. 가 아닌 경우 새로운 검은 색 Y 값이 보다 큰지 확인하십시오. 또는 이 540과 같습니다.
  5. 프로그램 계속.

당신은 결코 당신이 객체에 손가락을 "보유"경우에만 만난 얻을 것이다 두 번째 조건 >= 540이 충족되는 객체와 두 번째 조건을 만지지 상황을 얻기 위하여려고하지 않습니다.

+1

매우 상세한 답변을 해주신 Frozire에게 많은 감사를드립니다. 드디어 내 질문을 게시하기 전에 터치 이벤트 리스너의 행동 과정을 가지고 있지만 내가 원하는 것을 할 수있는 방법을 찾을 수 없습니다 ... 런타임 이벤트 리스너 아이디어는 "게임 이상 "다시 감사합니다 :) –

+1

@frozire +1'gameOverDetection'에서'black.touched'가 없습니까? 또한 두 번째 조건은 터치를 유지하는 경우에만 테스트 할 수 있지만 y 값이 화면의 아래쪽을 나타내는 경우 조건을 충족 할 수 없습니다. – Schollii

+0

예, 예, Schollii. 대답에서 mantioned 것과 같이 그 (것)들은 추가 될 필요가있을 것입니다. 어쨌든, David Gruet이 답을 찾았습니까? 더 이상의 문제가 있습니까?다른 사용자가 쉽게 솔루션을 찾을 수 있도록 답변을 수락하는 것을 기억하십시오 :) –

관련 문제