Луа управления оповещениями с таймером

Я совершенно новый в LUA. Я использую таймер для всплывающих предупреждений, созданных с помощью displaygroup, когда это необходимо. Чтобы удалить их, я использую функцию timeperformwithdelay, которая вызывает функцию remove, которая удаляет объект displaygroup со ссылкой на Self. Однако у меня есть секундомер, работающий с функцией таймера. Когда секундомер равен нулю, я выскакиваю Alert и через 2 секунды хочу удалить его. Но в этом случае функция удаления не работает. Ниже приведен код:

if timerleft==0 then
   screenalert("Game 1","Time is over")
   performwithdelay(2000,remove,1)


end

Спасибо Привет еще раз, спасибо за вашу поддержку. Вот мой код:

local function timerDown()
   timeLimit = timeLimit-1
   if timeLimit < 10 then
    timeLeft.text = "0:0"..timeLimit
   else
    timeLeft.text = "0:"..timeLimit
   end

 if(timeLimit==0)then
    timeLeft.text="0:00" 
    alertScreen("Game 1","Time is over!")

    timer.performWithDelay(2000,removeAlert,1)
    timeLimit=60    
 end
end


local function removeAlert()
   alertDisplayGroup:removeSelf()   
end

function alertScreen(title, message)

alertBox=display.newImage("cornice.png")
alertBox.x=W
alertBox.y=H/1.3
titolomessaggio=display.newText(title,0,0,"Arial",200)
titolomessaggio:setTextColor(255,255,0,255)

titolomessaggio.xScale=0.5
titolomessaggio.yScale=0.5

titolomessaggio.x=display.contentCenterX
titolomessaggio.y=display.contentCenterY-200

testomessaggio=display.newText(message,0,0,"Arial",100)
testomessaggio:setTextColor(255,255,0,255)
testomessaggio.xScale=0.5
testomessaggio.yScale=0.5

testomessaggio.x=display.contentCenterX
testomessaggio.y=display.contentCenterY+10


alertDisplayGroup=display.newGroup()
alertDisplayGroup:insert(alertBox)
alertDisplayGroup:insert(titolomessaggio)
alertDisplayGroup:insert(testomessaggio)
end

1 ответ

Я изменил ваш код, чтобы проверить его. пока этот код, который я сделал, работает с требованиями, которые вы хотели. Чтобы функции работали в lua, функция должна находиться в верхней части этой функции, то есть, если вы хотите вызвать функцию A из функции B. Функция A должна быть поверх функции B.

пример:

local functionA ()

end

local functionB ()

  functionA()

end

Вот фрагмент кода, который я сделал, чтобы ваш код работал по вашему вкусу:

local alertDisplayGroup = display.newGroup()
local timeLimit = 5

local function removeAlert()
   alertDisplayGroup:removeSelf()   
end

local function timerDown()
   timeLimit = timeLimit-1
    print(timeLimit)
   -- if timeLimit < 10 then
   --  print(timeLimit)

   -- else
   --  print(timeLimit)
   -- end

 if(timeLimit==0)then
    --timeLeft.text="0:00" 
    alertScreen("Game 1","Time is over!")

    timer.performWithDelay(2000,removeAlert,1)
    timeLimit=5    
 end
end


function alertScreen(title, message)

alertBox=display.newImageRect("images/error_message.png", 252, 85)
alertBox.x=screenW/2
alertBox.y=screenH/2
titolomessaggio=display.newText(title,0,0,"Arial",200)
titolomessaggio:setTextColor(255,255,0,255)

titolomessaggio.xScale=0.5
titolomessaggio.yScale=0.5

titolomessaggio.x=display.contentCenterX
titolomessaggio.y=display.contentCenterY-200

testomessaggio=display.newText(message,0,0,"Arial",100)
testomessaggio:setTextColor(255,255,0,255)
testomessaggio.xScale=0.5
testomessaggio.yScale=0.5

testomessaggio.x=display.contentCenterX
testomessaggio.y=display.contentCenterY+10


alertDisplayGroup=display.newGroup()
alertDisplayGroup:insert(alertBox)
alertDisplayGroup:insert(titolomessaggio)
alertDisplayGroup:insert(testomessaggio)
end

timer.performWithDelay( 1000, function() timerDown() end, 0)

как вы видете. Я немного отредактировал его, чтобы проверить. Приветствия.

Другие вопросы по тегам