Получение ссылки на кнопку?

#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 ниже, нет? Если нет, то я действительно не понимаю проблему.