你如何在两个功能之间暂停?

时间:2014-05-15 10:04:07

标签: javascript android jquery function cordova

我问过的上一个问题让我走到了我需要的地方的一半,我现在有一个功能可以触发2个功能。 A'装载机'函数(一个微调器图形)和播放文件的playAudio。

   function loadPlay(src, trackName) {
       loader();
       playAudio(src, trackName);
   }

当点击一个播放按钮时,应该出现加载微调器,当音频播放时,微调器应该消失。

播放按钮:

<span class="play"  onclick="loadPlay('http://a797.phobos.apple.com/us/r30/Music/72/89/b9/mzi.aytblawp.aac.p.m4a','t3')"  id="t3">

但是发生的事情是点击播放按钮后会有轻微的暂停(音频加载)并且音频和微调器同时出现?加载器应该在轨道加载时显示,然后在音频播放时消失?

如何添加暂停以确保在音频播放之前出现加载程序?

两种功能:

function loader() {
        // make a loader spinner appear as track loads
    $(".loading").addClass("loadingnow");
}

function playAudio(src,trackname) {
    // for Android
    if (audioPlaying === false) {
        if (device.platform == 'Android') {
            src = '/android_asset/www/' + src;
        }
        media = new Media(src, success, error_error);
        media.play();
        //add playing class so play button is replaced with stop button
        document.getElementById(trackname).parentNode.className="playing";
        // now track is playing remove the loader spinner
        $(".loading").removeClass("loadingnow");
        audioPlaying = true;
    } else {
        //audio is already playing
    }
}

function success() {
    // track has finished playing so remove the stop button put play button back
    $(".playing").removeClass("playing");

    audioPlaying = false;
}

function error_error(e) {
    //alert('great error');
    //alert(e.message);
}

function stopAudio() {
    // stop playing track
    if (media) {
        media.stop();
        audioPlaying = false;
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用setTimeout强制jQuery等待毫秒数

function loadPlay(src, trackName) {
       loader();
       setTimeout(function(){
              playAudio(src, trackName);
       }, 1000);
}

这会强制playAudio等待1秒钟。您的加载程序会弹出,但由于这个原因,您的用户将不得不等待一秒钟。