#lua #carousel #coronasdk
#lua #карусель #coronasdk
Вопрос:
Я работаю над приложением на Lua Corona. Будучи полным новичком, мне удалось сколотить небольшой скрипт для карусели, но теперь у меня возник вопрос.
function forwardButtonPress()
if carousel.getCurImage() < #myImages then
carousel.slideToImage(carousel.getCurImage() 1)
end
end
function backButtonPress()
if carousel.getCurImage() > 1 then
carousel.slideToImage(carousel.getCurImage() - 1)
end
end
--Here's where we do the actual initilization of the page.
local fwbutton = display.newImage("buttonArrow.png")
fwbutton.x = 260
fwbutton.y = 120
fwbutton:addEventListener("tap", forwardButtonPress )
local bkbutton = display.newImage("buttonBackArrow.png")
bkbutton.x = 60
bkbutton.y = 120
bkbutton:addEventListener("tap", backButtonPress )
Если вы посмотрите на код, то увидите, что у меня есть две кнопки: «Назад» и «Вперед». Они предназначены для перемещения изображений. Итак, допустим, вы добрались до конца карусели. Скрипт заботится о том, чтобы убедиться, что он еще не дошел до конца, но как мне получить доступ к кнопке, чтобы установить альфа-значение равным нулю или уменьшить его? Это линейно, поэтому я не могу просто поместить кнопку над ее функцией события, чтобы функция события могла ссылаться на кнопку… есть ли способ передать функции event ссылку на кнопку?
Ответ №1:
Вы можете перенаправить объявление функций обработчика событий, подобных этому, в верхней части файла:
local forwardButtonPress
local backButtonPress
Затем создайте свои кнопки и прикрепите обработчики событий (это скопированный и вставленный вами код):
local fwbutton = display.newImage("buttonArrow.png")
fwbutton.x = 260
fwbutton.y = 120
fwbutton:addEventListener("tap", forwardButtonPress )
local bkbutton = display.newImage("buttonBackArrow.png")
bkbutton.x = 60
bkbutton.y = 120
bkbutton:addEventListener("tap", backButtonPress )
Добавьте функцию для управления настройкой внешнего вида кнопок при нажатии любой из них:
local function setButtons()
if carosel.getCurImage() < #myImages then
fwbutton.alpha = 1.0
else
fwbutton.alpha = 0.5
end
if carosel.getCurImage() > 1 then
bkbutton.alpha = 1.0
else
bkbutton.alpha = 0.5
end
end
Теперь вы можете написать реализации функций, которые смогут работать с кнопками с помощью функции setButtons:
forwardButtonPressed = function()
if carousel.getCurImage() < #myImages then
carousel.slideToImage(carousel.getCurImage() 1)
end
setButtons()
end
backButtonPress = function()
if carousel.getCurImage() > 1 then
carousel.slideToImage(carousel.getCurImage() - 1)
end
setButtons()
end
Отказ от ответственности:Я не могу протестировать это сейчас, поэтому где-то может быть синтаксическая ошибка, но организация кода таким образом будет работать для того, что вы делаете.
Ответ №2:
Вы можете создать / определить кнопки над функцией и прикрепить EventListener ниже, нет? Если нет, то я действительно не понимаю проблему.