获得按钮参考?

时间:2011-05-19 18:15:45

标签: lua carousel corona

我正在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 )

如果查看代码,您会看到我有两个按钮,一个后退按钮和一个前进按钮。这些是用于滑动图像。所以,说你到了旋转木马的尽头。该脚本负责确保它不会超过结束,但如何访问该按钮以将alpha设置为零或淡化它?它是线性的,所以我不能把按钮放在它的事件函数上面,这样事件函数就可以引用按钮......有没有办法传递事件函数对按钮的引用?

2 个答案:

答案 0 :(得分: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

免责声明:我现在无法对此进行测试,因此某处可能存在语法错误,但以这种方式组织代码将对您正在进行的操作起作用。

答案 1 :(得分:0)

您可以在函数上方创建/定义按钮,并在下面附加EventListener,不是吗?如果没有,我真的不明白这个问题。