2013-09-09 7 views
0

Итак, это мой текущий счет - таймерКак остановить таймер, когда счет .... в Lua

local scoreTxt = display.newText("Score: 0", 0, 0, "Helvetica", 40) 
scoreTxt:setReferencePoint(display.TopLeftReferencePoint) 
scoreTxt.x = display.screenOriginX + 10 
scoreTxt.y = display.screenOriginY + 32 

local function updateScore() 
    score = score + 20 
    scoreText.text = string.format("Score: %d", score) 
end 

local scoreTimer = timer.performWithDelay(1000, updateScore, 0) 

Я хочу, чтобы таймер на паузу, когда

function explode() 
    exp.x = bird.x 
    exp.y = bird.y 
    exp.isVisible = true 
    exp:play() 
    bird.isVisible = false 
    timer.performWithDelay(1500, gameOver, 1) 

После этого игра перенаправляет вас умер экран, где оценка должна быть видна, но я хочу, чтобы вернуться к 0, когда

function start(event) 
    if event.phase == "began" then 
     storyboard.gotoScene("game", "fade", 50) 
    end 
end 

Итак, как я могу это сделать?

ответ

0

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

EnableScoreTimer = true -- Make It Global so you can call It from other files too. 

local function updateScore() 
    if not EnableScoreTimer then return end 
    score = score + 20 
    scoreText.text = string.format("Score: %d", score) 
end 

local scoreTimer = timer.performWithDelay(1000, updateScore, 0) 

Этот способ создает логическое значение, чтобы проверить, когда отключить таймер или нет, он не заканчивает таймер, но он просто заставляет его не запускать другие действия. Всякий раз, когда вы хотите отключить таймер счёта, используйте простое подтверждение true/false, чтобы включить/выключить его.

function explode() 
    EnableScoreTimer = false 
+0

Хорошо, но таймер еще остается там, а затем новый один отображает более отмененный один ... – user2735374

+0

@ user2735374 Это хорошая идея, чтобы использовать ответ Raymle, я еще не работали с короной, но это нормальный путь к lua, что вы можете легко прокатиться чем-то, этот метод отлично работает на компьютере, потому что компьютер получил лучшую систему, чем мобильную, поэтому неплохая идея иметь многие из них на мобильных устройствах. – 111WARLOCK111

1

Попробуйте

score = 0 -- You need to set the score to 0 everytime you create the game scene 
local scoreTxt = display.newText("Score: 0", 0, 0, "Helvetica", 40) 
scoreTxt:setReferencePoint(display.TopLeftReferencePoint) 
scoreTxt.x = display.screenOriginX + 10 
scoreTxt.y = display.screenOriginY + 32 

local function updateScore() 
    score = score + 20 
    scoreText.text = string.format("Score: %d", score) 
end 

local scoreTimer = timer.performWithDelay(1000, updateScore, 0) 

function explode() 
    timer.cancel(scoreTimer) --This will cancel the timer and eventually stop 
    ... 
end