PhoneGap和Xcode:使用相同的按钮播放和停止声音

时间:2012-01-20 02:02:22

标签: ios xcode cordova

我搜索了整个互联网,找到了解决问题的方法,但我没找到:(

所以,我正在使用Phonegap和Xcode做一个SoundBoard应用程序,我的问题是从我用来播放音频的同一个按钮停止声音,但我不能这样做,我认为这对我来说是不可能的!

这是具有Play和Stop功能以及IsPlaying功能的Javascript的一部分,我创建的是尝试使用变量SoundPlaying确定声音是否正在播放:

<script type="text/javascript" charset="utf-8">

SoundPlaying = false

...

function playAudio(url) {
            // Play the audio file at url
            var my_media = new Media(url,
                // success callback
                function() { console.log("playAudio():Audio Success");},
                // error callback
                function(err) { console.log("playAudio():Audio Error: "+err);});

        // Play audio
            my_media.play();
    }

        // Stop audio
        // 
        function stopAudio() {
            if (my_media) {
                my_media.stop();
            }
            clearInterval(mediaTimer);
            mediaTimer = null;

    }

    function IsPlaying(url) {

        if (SoundPlaying==false) { playAudio(url); SoundPlaying=true; alert('SoundPlaying is ' + SoundPlaying); }

        else { stopAudio(); SoundPlaying=false; alert('SoundPlaying is ' + SoundPlaying); }

        }

</script>

然后我尝试从按钮调用IsPlaying函数:如果变量SoundPlaying为false,则播放声音并将SoundPlaying设置为true,ELSE停止声音并将SoundPlaying设置为false

<button id='button' 
      style="background-image:url(imgs/image.png);"
              onClick = "IsPlaying('msk/sound.mp3');" >
</button>

就像声明的ELSE部分没有被检查,但是IF部分是的。事实上,我可以看到警告窗口说SoundPlaying是真的,但如果我第二次点击按钮......或者第三次......等等。

你能帮帮我吗?

非常感谢!

维托里奥

2 个答案:

答案 0 :(得分:0)

我认为你会深入研究代码......

您对此解决方案有何看法?

// Audio player
//
var soundfile = null;

// Play audio
//
function playPauseAudio(src) {
    if (soundfile == null) {
        // Create Media object from src
        soundfile = new Media(src, onSuccessAudio, onErrorAudio);
        soundfile.play();
    } else {
        soundfile.stop();
        soundfile = null;
    }
}

// Callback 
function onSuccessAudio(){};
function onErrorAudio(error) {
    alert('code: '    + error.code    + '\n' + 
          'message: ' + error.message + '\n');
}

答案 1 :(得分:0)

我在我的phonegap项目中使用了这个,效果很好。我甚至用一个暂停按钮:

<script type="text/javascript">
function hide(elementID)
{
document.getElementById(elementID).style.display = 'none';
}

function show(elementID)
{
document.getElementById(elementID).style.display = '';
}
</script>

<img id="off" src="images/general/sound-off.png" width="40" height="32" onClick="show('on'); hide('off'); playAudio();" alt="on">
<img id="on" src="images/general/sound-on.png" width="40" height="32" onClick="show('pause'); hide('on'); pauseAudio();" style="display:none;" alt="off">
<img id="pause" src="images/general/sound-pause.png" width="40" height="32" onClick="show('on'); hide('pause'); playAudio();" style="display:none;" alt="on">

对于音频,我在onclick中使用playaudio(),pauseaudio()和stopaudio()命令。 希望这会有所帮助: - )