Получение ссылки на кнопку? - PullRequest
1 голос
/ 19 мая 2011

Я работаю над приложением в 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 )

Если вы посмотрите на код, вы увидите, что яесть две кнопки, кнопка возврата и вперед.Это для скольжения изображений.Итак, скажем, вы дошли до конца карусели.Сценарий позаботится о том, чтобы он не проходил уже через конец, но как мне получить доступ к кнопке, чтобы установить альфа на ноль или исчезнуть?Она линейная, поэтому я не могу просто поместить кнопку над ее функцией события, чтобы функция события могла ссылаться на кнопку ... есть ли способ передать функции события ссылку на кнопку?

Ответы [ 2 ]

1 голос
/ 19 мая 2011

Вы можете объявить функции обработчика событий в верхней части файла:

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

Отказ от ответственности: Сейчас я не могу проверить это, поэтому где-то может быть синтаксическая ошибка, но организация кода таким образом будет работать для того, что вы делаете.

0 голосов
/ 19 мая 2011

Вы можете создать / определить кнопки над функцией и прикрепить EventListener ниже, нет? Если нет, то я не совсем понимаю проблему.

...