我的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)
答案 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)
?并且可能将它们放在不同的通道中是分离问题的好方法。