Corona SDK设置native.newVideo()的音量?

时间:2014-03-27 08:38:48

标签: video lua corona volume

如何在native.newVideo()播放期间更改音量?

这不起作用:

local function onKeyEvent( event )
local keyname = event.keyName;
if (keyname=="back" and event.phase == "up") then
    if _G.__isOverlay == true then
        storyboard.hideOverlay("slideDown")
    elseif storyboard.getCurrentSceneName() == "screen3" and (tableState == "info") then
        goBack()
    else
        native.requestExit()
    end
end

if ( keyname == "volumeUp" and event.phase == "down" ) then
    local masterVolume = audio.getVolume()
    --native.showAlert( "volume:", masterVolume, {"Ok"} )
    if ( masterVolume < 1.0 ) then
        masterVolume = masterVolume + 0.1
        audio.setVolume( masterVolume )
    end
    return true
elseif ( keyname == "volumeDown" and event.phase == "down" ) then
    local masterVolume = audio.getVolume()
    --native.showAlert( "volume:", masterVolume, {"Ok"} )
    if ( masterVolume > 0.0 ) then
        masterVolume = masterVolume - 0.1
        audio.setVolume( masterVolume )
    end
    return true
end

return true
end

if system.getInfo( "platformName" ) == "Android" then  
    Runtime:addEventListener( "key", onKeyEvent ) 
end

1 个答案:

答案 0 :(得分:0)

实际上,当您使用audio.setVolume时,它也可以将特定通道作为参数传递。 我认为native.newVideo()可能不会使用主音量控件,而实际上可能会使用特定的通道。 在您的情况下,您可以尝试使用audio.setVolume(masterVolume,0),它将影响所有可能的通道(1到32)。

如果有效,您应该通过使用此代码的循环来调试以查找实际频道:

for i=1, 32 do
    print('channel '..i..' is '..audio.isChannelActive(i))
end

然后,如果找到频道,请使用audio.setVolume(masterVolume,channelNumber)仅处理视频频道:)

干杯!