Луа управления оповещениями с таймером
Я совершенно новый в 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)
как вы видете. Я немного отредактировал его, чтобы проверить. Приветствия.