该函数仅在输的情况下起作用,而在赢的情况下不起作用。

当玩家输掉游戏时,会调用 gameFun 函数,但是以某种方式,当我将 alert(win) 更改为 gameFun,并将 processAnswer 中的 alert(lose) 更改为 alert(win) 时,它不起作用。我的目的是在用户赢或输游戏后问他们一个问题。

而且,当 sendMail 函数开启时,会给我这个: enter image description here 据我观察,它一直在 ansQuestion 和 alert(state) 之间来回切换。有没有办法解决这个问题?

点赞
用户869951
用户869951

当你在 ansQuestion() 中调用 alert(lose) 时,Lua 将 lose 解释为一个变量,而不是一个字符串。由于该变量不存在,因此它是 nil,因此执行 if (state == 'win') 的第二个分支。恰好在“输”这种情况下,这是你想要的分支,但这只是运气而已。当你执行 alert(win) 时,win 也是一个变量,因此它也是 nil,因此相同的分支被执行,那次它是错误的分支。像在 ballCollision 监听器中所做的那样使用

alert('lose')

alert('win')

注意,ansQuestionalert 中有几行重复的代码。

2014-03-02 22:39:46
用户2409015
用户2409015

在你的警告函数中,你传递了字符串值 'lose'。这就是为什么它总是调用失败条件的原因。据我所知,你需要调用这个函数。

local answer = 0

function ansQuestion(event)

    if event.target==noBtn then
        answer = 0
    else
        answer = 1
    end

    sendMail()

    askUser.isVisible = false
    yesBtn.isVisible = false
    noBtn.isVisible = false
    yesBtn:removeEventListener ('tap', ansQuestion)
    noBtn:removeEventListener ('tap', ansQuestion)
    alert(answer)

end

function alert(state)

    gameListeners('rmv')

    local alert
    if(state == 1) then
        alert = display.newImage('win.png')
    else
        alert = display.newImage('lose.png')
    end

    askUser.isVisible = false
    yesBtn.isVisible = false
    noBtn.isVisible = false
    print("time from start: ", (system.getTimer()-gameTime))
    alert.anchorX = 0.5
    alert.anchorX = 0.5
    alert.x = display.contentCenterX
    alert.y = display.contentCenterY
    transition.from(alert, {time = 3000, xScale = 0.3, yScale = 0.3})

    local score = display.newText(score.text, 300, -30, native.systemFontBold, 20)
    score:setFillColor(135, 75, 44)

end
2014-03-20 09:27:39