1

これが私のJqueryコードです:

   $(".check").on("click", function(){

         if($(this).is(":visible")){
               $('#audio').remove();
               $file=$(this).html(); // "mp3FileName"
               $(this).append('<div id="audio"><audio autoplay="autoplay" src="sounds/'+$file+'.mp3"></audio></div>');
        }

    });

これは完全に機能します。ただし、iPad では、オーディオを起動するクラス「チェック」のボタンにユーザーが「タッチ」すると、オーディオが再生される前に約 1 ~ 1.5 秒の一時停止があります。すべてのオーディオ ファイルをプリロードする必要があると考えています。ただし、これについては経験がありません。約 10 キロバイトのオーディオ ファイルを約 900 個用意します。

これを実装して、長い一時停止なしでタッチを発火させるにはどうすればよいでしょうか?

4

4 に答える 4

0

PhoneGap 用の Cordova Media プラグインを使用して、ユーザーがボタンをクリックする前に、ボリュームをゼロにしてファイルを 1 回再生することで、遅延を回避しました。

function playAudio(src, preload) {

        // Create Media object from src
        my_media = new Media(src);

        // Play audio
        if (preload === true) {
            my_media.setVolume(0);
        } else {
            my_media.setVolume(1);
        }
        my_media.play();   

}
于 2014-10-16T02:42:21.337 に答える
0

役立つ小さなこと:

var evt = ('ontouchstart' in window) ? 'touchstart' : 'click';
$(".check").on(evt, function(){...}

ほとんどのタッチ対応デバイスでは、クリック イベントが発生する前に 0.5 秒程度の遅延があります。したがって、900 個 (!!!!) のオーディオ ファイルをプリロードしようとする苦労をしなくても、タッチ対応デバイスのtouchstart代わりに にバインドするだけで時間を節約できます。click

于 2013-03-15T16:53:57.323 に答える
0

このエラーは Apple デバイスに共通であり、Apple デバイスにとっては大きなマイナスです。この遅延については、質問で考えたことを実行してみてください。これにより、このバグが解消されます。そして、これが起こっている別の理由があります.Apple iPadはオーディオ/ビデオの品質を下げて再生可能にします.これは彼らの間違いです.今日、各オーディオ/ビデオが即座に再生されるのは正常です.

于 2013-03-15T05:11:27.840 に答える