在电晕中将分数重置为零的按钮

Button that resets score to zero in corona

我正在努力学习电晕。我创建了一个示例应用程序,每次单击气球时它都会将分数增加 1。我添加了一个按钮,如果你点击,分数应该回到 0。

local tapCount = 0
local widget = require "widget"

local background = display.newImageRect( "background.jpg", 700,1075)
background.x = display.contentCenterX
background.y = display.contentCenterY

local tapText = display.newText( tapCount, display.contentCenterX, 20, native.systemFont, 40 )
tapText:setFillColor( 0, 0, 0 )

local platform = display.newImageRect( "panel.png", 300, 50 )
platform.x = display.contentCenterX
platform.y = display.contentHeight-25

local balloon = display.newImageRect( "baloon.png", 112, 112 )
balloon.x = display.contentCenterX
balloon.y = display.contentCenterY
balloon.alpha = 0.8

local physics = require( "physics" )
physics.start()

physics.addBody( platform, "static" )
physics.addBody( balloon, "dynamic", { radius=50, bounce=0.3 } )

local myButton=widget.newButton{
    --The id can be used to tell you what button was pressed in your    button event
    id = "myTextButton",
    --This is the text label to put on the button
    label = "Reset",
    --This is the start x coordinate of the Top Left Corner
    left = 150,
    --This is the start y coordinate of the Top Left Corner
    top = 150,
    --Emboss can be true or false, tells it to make the label look embossed/inset
    emboss = true,
    --The border around the outside of the button
    strokeWidth = 4,
    --How round to make the corners
    cornerRadius = 8,
    --this tells it what function to call when you press the button
    onEvent = myButtonEvent
}


local function pushBalloon()
    balloon:applyLinearImpulse( 0, -0.75, balloon.x, balloon.y )
    tapCount = tapCount + 1
    tapText.text = tapCount
end

local myButtonEvent = function (event )
    if (event.phase == "release") then
        tapCount = 0
        tapText.text = tapCount
    end
end
balloon:addEventListener( "tap", pushBalloon )

来自科罗纳 documentation

onEvent (optional) Listener. An optional function that should only be specified if onPress and onRelease are not set. This callback function allows you to test for the event.phase of "began", "moved", or "ended".

所以试试

方法一:先定义myButtonEvent函数,再在代码中使用它的名称。

local myButtonEvent = function (event )
    if (event.phase == "ended") then
        tapCount = 0
        tapText.text = tapCount
    end
end

local myButton=widget.newButton{
    --The id can be used to tell you what button was pressed in your    button event
    id = "myTextButton",
    --This is the text label to put on the button
    label = "Reset",
    --This is the start x coordinate of the Top Left Corner
    left = 150,
    --This is the start y coordinate of the Top Left Corner
    top = 150,
    --Emboss can be true or false, tells it to make the label look embossed/inset
    emboss = true,
    --The border around the outside of the button
    strokeWidth = 4,
    --How round to make the corners
    cornerRadius = 8,
    --this tells it what function to call when you press the button
    onEvent = myButtonEvent
}

方法二:使用前向声明。

local myButtonEvent -- put on top of file