5

我正在尝试从声音文件中的某个点开始播放声音(mp3)。我希望它可以在大多数移动设备上工作,并且确实如此,但似乎 Windows Phone 8 存在问题。它在三星 Galaxy 和 iPhone 上工作正常,但在 WP 上,声音总是从头开始,忽略当前时间设置。有任何想法吗?谢谢!

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。至少在 Windows 手机上没有。所以我必须先调用 play 然后(在 x ms 之后)我可以设置 currentTime。

我现在的想法是在我的声音文件中保持一些静音并不断循环播放该静音。当我想播放声音时,我可以设置 currentTime。当声音部分完成后,我再次启动静音循环。使用多轨会容易得多,但不幸的是我没有这个选项。

因此,可以在 Windows phone 8 上使用 currentTime。但是我遇到了另一个问题。由于我现在一直在播放声音,所以当手机进入睡眠模式时,javascript 似乎会冻结(导致静音循环停止),但无论如何都会播放声音。所以整个 mp3 文件将从头到尾运行。我尝试使用 onfocusout 事件来停止循环并暂停声音,但它不起作用。将继续调查这种相当罕见和错误的行为。

于 2013-01-30T18:12:35.153 回答