2014-03-01 4 views
1

게임 도중 또는 사용자가 게임을 얻거나 잃은 후에 사용자에게 질문하는 방법이 있습니까? 아래의 코드는 내가 동의 한 플레이어를 요청하기 위해 작성한 코드이며 조금 변경했습니다. 나는 그것을 어떻게 바꿔야하는지 잘 모르겠다. 그리고 응답을 나에게 이메일로 보내고 싶었다.게임 도중에 코로나에서 뭔가를 대답하도록 사용자에게 묻습니다.

--Asking user a question, response is printed out in the Simulator Output and emailed to me 
local alert = native.showAlert("Question", "Are the controls difficult to master?", { "Yes", "No" }, gameFun) 
local function gameFun(event) 
    print("User's decision is ".. event.index .. " User answered the question " .. event.action) 

    local action = event.action 
    if "clicked" == event.action then 
     if 2 == event.index then 

     end 
    elseif "cancelled" == event.action then 
     -- our cancelAlert timer function dismissed the alert so do nothing 
    end 
end 

좋아, 난 이제 조금 내 코드를 변경, 나는 그래서이 한 번만 경고 상자를 사용할 수 있다고 생각이 : 나는 새로운 기능을 만들었습니다

function gameFun() 
    balloonText.isVisible = false 
    balloonTextt.isVisible = false 
    balloonTexttt.isVisible = false 
    questionText.isVisible = false 
    askUser = display.newText(
     'Is the cannon hard to use? Rate it at a scale of 1-5(5 the best)', 
     display.contentCenterX, 
     display.contentWidth/4, 
     native.systemFont, 20) 
    askUser:setFillColor(135, 75, 44) 
    yesBtn = display.newImage("Yes.png",120,290) 
    noBtn = display.newImage("No.png",190,290) 
end 

function gameFunListener(action) 
    if (action=='add') then 
     yesBtn:addEventListener ('tap', sendMail()) 
     noBtn:addEventListener ('tap', sendMail()) 
    else 
     yesBtn:removeEventListener ('tap', sendMail()) 
     noBtn:removeEventListener ('tap', sendMail()) 
    end 
end 

하는 사용자에게 질문을하고, 예 또는 아니오를 누르면 이메일 옵션으로 이동하여 이메일을 보내고 알려줄 수 있습니다. 그러나 어떤 이유로 버튼이 작동하지 않고 전자 메일을 쓰기 위해 점프합니다.

답변

0

게임에서 게임에서 사용자가 얻거나 잃은 게임을 결정하는 곳 (예 : enterFrame 이벤트 처리기 또는 다른 이벤트 처리기). 여기서 askQuestion() (또는 survey) 함수를 호출합니다. 이 작업을 수행 할 수있는 방법은 여러 가지가 있지만 기본적으로는

  • 입니다. 스토리 보드를 사용하는 경우 질문을 새로 작성하면 (currentScene.gotoScene("newscene"));
  • 그렇지 않으면 (더 스토리 보드) 당신은 눈에 보이는 화면의 일부가 보이지 않는 개체를 만들 수 없었다, 몇 가지 질문 위젯 (질문에 대한 텍스트, 답변 버튼 등) 인스턴스화 할 마지막 질문, 당신이 대답 그 볼

질문을하기 전의 상태로보기를 복원하십시오 (또는 "게임 오버"페이지 등을 표시하십시오). 다른 GUI 인 Corona는 사용자 동작 (버튼 누르기, 텍스트 입력, 다른 객체와의 충돌 객체 이동 등) 및 시스템 이벤트 (enterFrame, orientation, suspend/resume 등)로 인한 이벤트를 기반으로하므로 질문 표시를 유발하는 트리거는 해당 이벤트 핸들러 중 하나에 있습니다. 예를 들어

:

function gameFun() 
    balloonText.isVisible = false 
    ... 
    askUser = display.newText(
     'Is the cannon hard to use? Rate it at a scale of 1-5(5 the best)', 
     display.contentCenterX, 
     display.contentWidth/4, 
     native.systemFont, 20) 
    askUser:setFillColor(135, 75, 44) 
    yesBtn = display.newImage("Yes.png",120,290) 
    noBtn = display.newImage("No.png",190,290) 
    yesBtn:addEventListener ('tap', processAnswer) 
    noBtn:addEventListener ('tap', processAnswer) 
end 

function processAnswer(event) 
    if event.target == noBtn then 
     ... 
    else 
     ... 
    end 
    sendMail() 
    askUser.isVisible = false 
    yesBtn.isVisible = false 
    ... 
    yesBtn:removeEventListener ('tap', processAnswer) 
    noBtn:removeEventListener ('tap', processAnswer) 
end 

당신이 리스너를 등록 할 때보다주의, 당신은 당신이 등록하는 기능 (함수 이름 뒤에 어떤 ())를 호출하지 않아야합니다! 또한 처음에 질문 표시 객체를 만든 다음 gameFun에서 표시 여부를 전환하고 processAnswer에서 해제하면 removeEventListener에 대해 걱정할 필요가 없습니다. 표시되는 동안에 만 탭에 응답합니다.

+0

나는 스토리 보드를 사용하지 않지만 스토리 보드는 편리하지만 스토리 보드를 사용하는 대신 다른 방법이 있습니까? – user3305142

+0

@ user3305142 이것은 내 대답이지만 분명하지는 않지만 아직 편집하지 않은 경우 의견을 편집합니다. – Schollii

+0

1 시간 전에 게시 한 것과 같은가요? – user3305142

관련 문제