Lua - Audio.stop()无法正常工作

时间:2014-10-31 00:43:06

标签: lua corona

我的audio.stop()有一个大问题 当我打电话给它时,下一个音频会被呼叫 我想在改变场景之前停止所有音频 但它不能正常工作下一个音频开始在下一个场景中播放。 这是我的代码所以我可以更好地解释。

这里我开始播放第一个音频文件。

function scene:show( event )
    local sceneGroup = self.view
    local phase = event.phase
    if phase == "will" then 
        narrativeChannel = audio.play( audio1, { channel=5, onComplete=NarrationStart } )
    elseif phase == "did" then

    end
end

NarrationStart = function (  )
        narrativeTimer = timer.performWithDelay( 100,function (  )
            catBubble.isVisible = true
            catText.isVisible = true
            transition.from(catText, {time = 400,alpha = 0,y = catText.y - 15, onComplete = function ()
        narrativeChannel = audio.play( audio2, { channel=5}) end })
end, 1 )

这是我停止的地方

function scene:hide( event )
    local sceneGroup = self.view

    local phase = event.phase

    if event.phase == "will" then
        if(narrativeChannel ~= nil) then
            audio.stop( ) 
            print("stoped") --gets call
        end
        transition.cancel()
        if(narrativeTimer ~= nil)then timer.cancel( narrativeTimer ) end 
    elseif phase == "did" then
        -- Called when the scene is now off screen
    end 

end

当我在播放第一个audio1时改变场景时,第一个音频被停止,但在此之后音频2开始...... 我不知道为什么会这样。 请任何想法或coments如何解决这个问题。 我试过audio.stop(),audio.stop(channelUsed) 没有什么能继续播放我不想要的下一个音频。

提前感谢。

信息:场景管理员:作曲家 Corona build:版本2014.2463(2014.10.14)

2 个答案:

答案 0 :(得分:0)

Albert是对的,transition.cancel()确实没有取消onComplete

您可以添加类似isAudioOn的可变量,并在停止音频时将其置为false。这样您就可以在onComplete内检查该变量。

NarrationStart = function (  )
        if(isAudioOn) then
            narrativeTimer = timer.performWithDelay( 100,function (  )
            catBubble.isVisible = true
            catText.isVisible = true
            transition.from(catText, {time = 400,alpha = 0,y = catText.y - 15, onComplete = function () narrativeChannel = audio.play( audio2, { channel=5}) end })
        end
end, 1 )

答案 1 :(得分:0)

您是否尝试过audio.stop(narrativeChannel)?并且可能将它们放在不同的通道中是分离问题的好方法。