【问题标题】:Getting a button reference?获取按钮参考?
【发布时间】:2011-05-20 08:34:54
【问题描述】:

我正在 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 设置为零或淡化它?它是线性的,所以我不能只是把按钮放在它的事件函数之上,让事件函数可以引用按钮……有没有办法让事件函数对按钮的引用?

【问题讨论】:

    标签: lua carousel coronasdk


    【解决方案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,不是吗?如果不是,我真的不明白这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-18
        • 1970-01-01
        相关资源
        最近更新 更多