PhoneGap и Xcode: воспроизведение и остановка звука с помощью одной и той же кнопки - PullRequest
0 голосов
/ 20 января 2012

Я обыскал весь Интернет, чтобы найти решение своей проблемы, но не нашел его: (

Итак, я создаю приложение SoundBoard, используя Phonegap и Xcode, и мою проблемуо остановке звука с той же кнопки, которую я использовал для воспроизведения звука, но я не могу этого сделать, я думаю, что это невозможно для меня!

Это часть Javascript с функциями Play и Stopи функцию IsPlaying, которую я создал, пытаясь определить, воспроизводится ли звук, или нет, используя переменную 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 имеет значение true, но нет, если я нажму на кнопку второй раз ... или третий ... и т. д.

Можете ли вы помочьменя ??

Большое спасибо!

Витторио

Ответы [ 2 ]

0 голосов
/ 26 сентября 2012

Я использовал это в своем проекте 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">

Для аудио я использую команды playaudio (), pauseaudio () и stopaudio () в onclick. Надеюсь, это поможет: -)

0 голосов
/ 22 января 2012

Я думаю, вы углубляетесь в код ...

Что вы думаете об этом решении?

// 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');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...