没有响应lua的tap事件的对象

时间:2015-12-15 02:16:35

标签: lua corona

我正在构建一个简单的游戏,玩家可以点击随机移动的球来获得分数。但是,当我测试我的游戏时,我意识到点击功能无法正常工作。当我试图点击移动的球时,有时分数会增加,但有时候没有反应。这是我使用的代码。谢谢你的帮助!

    local ball = display.newImage( "ball.png" )
        ball.x = math.random(0,w)
        ball.y = math.random(0,h)
        physics.addBody( ball)


    function moveRandomly()
    ball:setLinearVelocity(math.random(-50,50), math.random(-50,50));
    end
    timer.performWithDelay(500, moveRandomly, 0);

    ball.rotation = 180
    local reverse = 1

    local function rotateball()
        if ( reverse == 0 ) then
            reverse = 1
            transition.to( ball, { rotation=math.random(0,360), time=500,             transition=easing.inOutCubic } )
        else
            reverse = 0
            transition.to( ball, { rotation=math.random(0,360), time=500,         transition=easing.inOutCubic } )
        end
    end

    timer.performWithDelay( 500, rotateball, 0 )

    local myText, changeText, score

    score = 0


    function changeText( event )
        score = score + 1
        print( score.."taps")
        myText.text = "Score:" ..score
        return true
    end

    myText = display.newText( "Score: 0", w, 20, Arial, 15)
        myText:setFillColor( 0, 1, 1)

    myText:addEventListener( "tap", changeText)
    ball:addEventListener("tap", changeText)

1 个答案:

答案 0 :(得分:1)

您的代码看起来很好,特别是因为您说它有时会起作用。

我唯一能想到的是,也许你应该使用" touch"事件而不是"点击"事件,因为水龙头不会触发,直到您将手指从屏幕上移开。看到 https://docs.coronalabs.com/guide/events/touchMultitouch/index.html

ball:addEventListener("touch", changeText)

你想要使用"开始"事件的阶段,因此每次触摸只会增加一次得分(当它开始时)。

function changeText( event )
    if ( event.phase == "began" ) then
        score = score + 1
        print( score.."taps")
        myText.text = "Score:" ..score
    end
    return true
end