2014-02-08 2 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', Lua для htis, поэтому в' display.newText' нет необходимости, а в 'reduceTime' использовать' if time == 0 then'. – Schollii

+0

Я установил timeNumber.isVisible = false, предшествующий timelimiter(), чтобы он не перекрывал текущий текст. Спасибо за ваш быстрый ответ. :) – kenkenXD

ответ

0

Не совсем уверен, что вызывает это, но вы создаете текст таймера каждую секунду, что необязательно. В принципе, они должны быть в порядке, чтобы вы, вероятно, видели последнее, но это немного странно. Поэтому в первую очередь необходимо очистить код, если я понимаю, что вы пытаетесь сделать, попробуйте следующее:

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

и создать timeNumber в основной():

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

Смежные вопросы