2014-02-08 1 views
1

좋은 하루. 저는 CoronaSDk의 초보자이며 timer.performWithDelay와 관련된 문제에 직면하고 있습니다. 내 코드는 다음과 같습니다.CoronaSDK timer.performWithDelay 반복 혼동

local time 
function main() 
    display.setStatusBar(display.HiddenStatusBar) 
    time = 180 
    timelimiter() 
    timelimit = timer.performWithDelay(1000,decreaseTime,0) 
end 

function timelimiter() 
    timeNumber = display.newGroup() 
    timeNumber = display.newText("Time: "..tostring(time), 1, 0, native.systemFontBold, 14) 
    timeNumber.x = 330 
    timeNumber.y = 300 
end 

function decreaseTime() 
    time = time - 1 
    timeNumber.isVisible = false 
    timelimiter() 
    print(time) 
    if(tostring(time) == "0") then 
    print("Finish!") 
    timer.pause(timelimit) 
    end 

end 
main() 

이 코드는 예상대로 실행됩니다. 나는 심지어 이러한 코드를 사용하여 새로운 main.lua 파일을 만들려고 시도했지만 오류없이 실행할 수있었습니다. 하지만 제 문제는 내가하려고했던 게임에 구현했을 때 루프가 176에 멈추는 것입니다. 누구도 이걸 도와 줄 수 있습니까? 내 프로젝트의 전체 코드는 여기에있다 (내가 언급 한 특정 lua 파일).

http://pastebin.com/98CR6mnW

는 당신의 도움을 주셔서 감사합니다. 나의 영어를 위해 유감스럽게 생각해. :)

+0

아마도 관련이 없지만 'timeNumber.isVisible = false'를 설정하면 숨길 수 있습니다. 그런 다음 다시 보이지 않게 할 수 있습니까? 또한'tostring'은 거의 필요치 않습니다. 루아는'display.newText'에'display.newText'를 쓸 필요가 없습니다.'reduceTime'에'time == 0 then'을 사용하십시오. – Schollii

+0

timelimiter()가 앞에 붙인 timeNumber.isVisible = false를 설정하여 표시된 현재 텍스트가 겹치지 않도록하십시오. 신속한 응답 btw 주셔서 감사합니다. :) – kenkenXD

답변

0

아직 어떤 원인인지는 모르겠지만 매초마다 타이머 텍스트를 만드는 것은 필요하지 않습니다. 원칙적으로 그들은 순서대로 있어야 최신 정보를 볼 수 있지만 조금 이상합니다. 그래서 첫 번째 코드를 정리해야합니다 나는 당신이 뭘 하려는지 이해한다면,이 시도 :에 timeNumber을

function timelimiter() 
    timeNumber.setText("Time: "..time) 
    timeNumber.x = 330 
    timeNumber.y = 300 
end 

을 만들고 주() :

function main() 
    timeNumber = display.newGroup() 
    timeNumber = display.newText("Time: "..time, 1, 0, native.systemFontBold, 14) 
    display.setStatusBar(display.HiddenStatusBar) 
    time = 180 
    timelimiter() 
    timelimit = timer.performWithDelay(1000, decreaseTime, 0) 
end 

이 그런 다음 decreaseTime이 같은 것

function decreaseTime() 
    time = time - 1 
    -- timeNumber.isVisible = false 
    timelimiter() 
    print(time) 
    if time == 0 then 
     print("Finish!") 
     timer.pause(timelimit) 
    end 
end 

귀하가 새 데이터를 기반으로 귀하의 게시물을 업데이트하려고 시도한 경우.

+0

오케이! 고맙습니다! 내가 집에 왔을 때, 나는 이것을 시험 할 것이다. 빨리 알려 드리겠습니다. 빠른 응답을 보내 주셔서 감사합니다! :) – kenkenXD

+0

당신의 위대한 답변에 감사드립니다! 귀하의 솔루션은 크게 도움이되었습니다. 나는 그것을 마침내 고쳤다. 감사! – kenkenXD