5

サウンドファイルの特定のポイントからサウンド(mp3)を再生しようとしています。ほとんどのモバイルデバイスで動作させたいのですが、Windows Phone 8に問題があるようです。SamsungGalaxyとiPhoneでは正常に動作しますが、WPでは、サウンドは常に最初から始まり、無視します。 currentTimeセット。何か案は?ありがとう!

var sfile = "test.mp3';
    var myobj;
    function init()
    {

         myobj=document.createElement('audio');
        myobj.style.position="relative"; 
        myobj.style.bottom=0;
        myobj.src = sfile;
        myobj.id='sound';

        document.body.insertBefore(myobj,document.body.lastChild);
        myobj.load();
    }
    //called when pressing a button
    function test()
    {
        myobj.currentTime=30.0;
        myobj.play()
    }
4

1 に答える 1

1

これについてもう少し情報を得ました。play()呼び出しを行う前にcurrentTimeを設定できないことがわかりました。少なくともWindowsPhoneではそうではありません。したがって、最初にplayを呼び出す必要があり、次に(x ms後に)currentTimeを設定できます。

今の私の考えは、サウンドファイルに無音を入れ、その無音を継続的にループさせることです。サウンドを再生したいときは、currentTimeを設定するだけです。サウンドパートが終了したら、沈黙のループを再開します。マルチトラックを使用する方がはるかに簡単ですが、残念ながらそのオプションはありません。

したがって、Windows Phone 8でcurrentTimeを使用することは可能です。しかし、私は別の問題にぶつかりました。私は今ずっとサウンドを再生しているので、電話がスリープモードに入ると、JavaScriptがフリーズしているように見えます(沈黙のループが停止します)が、とにかくサウンドは再生されます。したがって、mp3ファイル全体が最初から最後まで実行されます。onfocusoutイベントを使用してループを停止し、サウンドを一時停止しようとしましたが、機能しません。このかなりまれでバグのある動作を調査し続けます。

于 2013-01-30T18:12:35.153 に答える