Lua - Audio.stop() 不正常工作

我对 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

当我在播放第一个音频1时更改场景时,第一个音频被停止,但是紧接着音频2开始播放...我不知道为什么会发生这种情况。请提供任何想法或评论如何解决此问题。我尝试了 audio.stop() 、 audio.stop(channelUsed) ,但什么都没有播放下一个音频,我不想要那个。

提前致谢。

信息:场景管理器:作曲家 Corona 构建:Version 2014.2463 (2014.10.14)

点赞
用户2260604
用户2260604

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 () 
                if(isAudioOn) then 
                    narrativeChannel = audio.play( audio2, { channel=5}) 
                end 
            end })
        end, 1 )
    end
end
2014-11-01 10:34:21
用户3803880
用户3803880

你试过放置 audio.stop(narrativeChannel) 吗?也许将它们放置在不同的通道中可以有效地隔离问题。

2014-11-03 01:53:10